参考:互联网协议入门(阮一峰)
- Application Layer
- Transport Layer
- Network Layer
- Link Layer
- Physical Layer
越上面的层越接近用户,越下面的层越接近硬件。
从下往上:
- Physical Layer
物理层,所有0/1的数据。
- Link Layer
Ethernet协议,规定Physical Layer中的0/1按一定规则组成数据包(Frame):Head(固定为18 byte,包含了发送者、接收者等信息)和Data(长度为48到1500 byte不等,故每个Frame整体长度为64-1518 byte)两部分,数据超出包的长度则分开几个包发送。
MAC address:由Ethernet定义的,接入Internet的pc必须有网卡接口,这个网卡有全球唯一的标识,即MAC地址。MAC由48位二进制数组成(即12位十六进制数),如15-8A-C4-82-F1-1D,其中前6位十六进制数表示厂家信息,后6位为流水号。
两台pc的MAC确定了receiver和sender,然而中间的过程需要ARP协议来进行传输。Sender在其子网络中,以broadcasting的形式来发送数据。
- Network Layer
MAC定义的只是物理的地址,在整个Internet中,需要另外的信息来确定pc所在的网络(需要使用"路由"的方式而非"广播"的方式)。
IP address,是与MAC没有联系的网络地址协议。由4组,每组8位(共32位)二进制数表示( 或分成四段的十进制数 )。
在IPV4中要查看两个IP是否属于同一个子网络,可通过子网掩码(255.255.255.0的形式,255对应二进制11111111,0对应二进制00000000)。
通过子网掩码中部分位数分别与两个IP地址进行与(AND)运算。说白了就是已知网络部分相同即可。
通过子网掩码中部分位数分别与两个IP地址进行与(AND)运算。说白了就是已知网络部分相同即可。
IP数据包(IP Datagram),同样分为Head和Data两部分,其中Head包含了IP地址、长度、版本等信息,长度为20~60 byte,整个包(Head+Data)最长65535(2^16 - 1) byte。IP数据包整体包含于Ethernet包(Frame)的Data部分中,如果长度超出(Frame的Data部分最多1500 byte),则分割成几部分发送。
- Transport Layer
实现在Frame中加入port信息的protocol有两种:UDP和TCP. 两种数据包的组成都是Head+Data的形式,Head带有port的信息,整个UDP/TCP数据包包含在Network Layer的IP Datagram的Data部分。
UDP:Head仅有8 byte,总长度不超过65535 byte,正好放进一个IP Datagram中。UDP包发出后不会确认对方是否收到。
TCP:总长度理论上无长度限制,但为了网络传输效率,最好不超过IP Datagram的Data长度。此外与UDP不同的是对方接收到数据后会进行确认,若发送失败则重新发送,因此安全性比UDP好,同时也更复杂和消耗更多资源。
Unix 系统中将host+port的形式称为socket。
- Application Layer
总结:
Questions:
1.为什么IP数据包的最长为65535 byte?
A:IP Datagram总长度为16 byte, 故总最大值为2^16 - 1 = 65535 byte。
2.如果要将1个IP数据包的内容分割成几个Frame(Ethernet数据包),那么分割的每个Frame 是否都包含相同的Datagram?