回顾一下互联网协议的分层结构:
>物理层
物理手段的连接,网络的电气特征,负责传输01电信号。
>链路
确定了01的分组方式,其中“以太网“的链路层协议占据主导:
以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。
标头中,使用MAC地址标识接收和发送者信息。
一个网卡发给另一个网卡。
>网络层
IP协议,为每一台计算机分配IP地址,划分子网络。
网络层还有个ARP协议,通过IP获取子网内对方的MAC地址。
>传输层
端口(port):理解为每一个使用网卡的程序的编号。
传输层功能:就是实现“端口到端口”的通信。
Unix系统把主机+端口,叫做“套接字(socket)”,有了它就可以进行网络应用程序开发。
传输层涉及到两种协议:UDP/TCP
UDP很简单:"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:
TCP协议:这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。
>应用层
"应用层"的作用,就是规定应用程序的数据格式。
举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。
这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因此,现在的以太网的数据包就变成下面这样。
>参考阮一峰,一个具体实例,继续阅读:
http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html