Internet Protocol

参考:互联网协议入门(阮一峰)

  • 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数据包(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
在Network Layer和Link Layer中已经定义了IP地址和MAC地址,也就是说实现了主机与主机间的communication,但是收到Frame(MAC + IP Info)后,计算机并不知道这些数据要用在哪里。为了让计算机搞清楚这个Frame对应的程序,需要带上port的信息。即是Transport Layer实现的是port与port之间的communication.
 
实现在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
通过Transport Layer,某个Application已经收到了它所需要的数据包,然后它需要解读这个数据包。因此Application Layer的数据包的内容就是这次数据传输中最核心的数据本身(我说的),也就是TCP or UDP数据包中的Data部分,而Application Layer则定义了这些数据应该是怎么一个形式(email, www, ftp etc),好让该application进行解读。因此这是直接面对用户的一层。
 
 
总结:
Internet Protocol
  
Questions:
1.为什么IP数据包的最长为65535 byte?
A:IP Datagram总长度为16 byte, 故总最大值为2^16 - 1 = 65535 byte。
 
2.如果要将1个IP数据包的内容分割成几个Frame(Ethernet数据包),那么分割的每个Frame 是否都包含相同的Datagram?

mac

相关推荐