网络基础---ip协议

it2022-05-05  127

基本概念: 主机:配有ip地址,但不进行路由控制的设备:路由器:既配有ip地址,又进行路由控制;节点:路由器和主机的统称

ip协议处于TCP/IP模型中的中间网络层,可谓是上有老下有小,既为上层的传输层(TCP,UDP)服务,又调用数据链路层传输数据。 在这里我们认为 ip协议是有能力将数据从A主机传入B主机的。 但是有能力不代表一定能做到,

举个例子你二大爷家的孙子次次考试都考700多分,我们认为他有能力考清华,但是他高考发挥失常考了460分,最后考入了华清,没有去清华。 ip协议就像那孙子一样,可能会因为网络或者其他问题而造成丢包,没有传输成功,这个时候就需要TCP协议来帮助它传输数据。 在TCP IP强强组合后,就能可靠的传输数据。 注意了,可靠的传输数据,在我们眼里这是什么?这是网络! 所以TCP/IP协议又叫做网络协议。 下面我们来看一下协议头格式。 . 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. . 4位首部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示大 的数字是15, 因此IP头部大长度是60字节. . 8位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位 TOS分别表示: 小延时, 大吞吐量, 高可靠性, 小成本. 这四者相互冲突, 只能选择一个. 对于 ssh/telnet这样的应用程序, 小延时比较重要; 对于ftp这样的程序, 大吞吐量比较重要 . 16位总长度(total length): IP数据报整体占多少个字 . 16位标识(id): 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个 id都是相同的 . 3位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为1表示禁 止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话, 后一个分片置为1, 其他是0. 类似于一个结束标记.

. 13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片 在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了后一个报文之外, 其他报 文的长度必须是8的整数倍(否则报文就不连续了) . 8位生存时间(Time To Live, TTL): 数据报到达目的地的大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环 8位协议: 表示上层协议的类型 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏 . 32位源地址和32位目标地址: 表示发送端和接收端. 选项字段(不定长, 多40字节): 略

重点是3位标识符和13位片偏移,和数据分片有关。 ip下面的数据链路层每次传输数据时是有限的,输入ifconfig mtu(最大传输单元)=1500字节,也就是说ip发给下一层的数据+ip报头数据帧最多也就1500字节,但是假如传的数据多于1500字节怎么办? 举个例子 假如你宿舍有一台台式机,放暑假了你想发回家,但是顺丰快递告诉你他们最多只能发5公斤的快递,而你的台式机20公斤都有了,那该怎么办?最好的方法是你把台式机拆成几部分发过去,等你回家后,再把它们组装起来,ip也是这么干的,将数据进行分片,每个数据配一个ip报头发给下层,最后再组合起来。 要注意的一点是,分片越少越好,因为有丢包率,如果报头损坏就要重发影响效率。


最新回复(0)