Linux下网络通信编程(二):有关IP的详细描述

IP 协议的详细描述

IP服务特点

   IP协议为上层的协议提供了无状态、无连接、不可靠的服务。
   无状态:IP通信的双方不同步传输数据的状态信息,有关数据报的传输过程和接收过程都是独立的,没有上下文关系的。缺点:无法处理乱序和重复的IP数据报。优点:简单高效。
   对于IP通信来说,当接收端只要确认接收到的数据报是完整的(多个数据报<数据报太大,只能分片发送>或者单个数据报)就会将这些无序的、甚至是有重复的数据报交付给上层的协议,例如TCP。TCP就会将这些数据报排列成有序的、正确的,然后上交给上层协议。
   无连接:指IP通信的双方,都不长久的维持对方的信息,因此上层每次发送数据时,都会在数据报中添加接收端的IP地址。
   不可靠:指的是不能保证IP协议能够准确的将IP数据报发送到接收端。但是这个缺点由IP协议的上层协议来解决:例如TCP能够实现数据确认、超时重传等机制达到可靠传输。

IPV4的头部结构

在这里插入图片描述
   IPv4的头部的长度为20字节
  4位版本号:对于IPV4是4 ,其他版本不讨论。
  4位头部长度:4位的二进制最大为1111=15(十进制)头部长度的单位是4字节,所以头部长度最大字节数为4*15=60字节
  16位总长度是数据报的总长度,单位是字节,所以数据报最大长度位216=655235字节,但出于实际情况下的MTU(最大传输单元)限制,达不到这么多,这就需要用到分片。
  16位标识唯一的标识主机发送的每一个数据报。随机生成一个初始值,然后每发一个数据报,其值加1.
  3位标志字段的第一位保留;第二位(Don‘t Fragment,DF)表示禁止分片;第三位(More Fragment,MF)表示更多分片。
  13位片偏移是分片相对于第一个分片的便宜数(不包含头部),实际的偏移值是该值左移3位(乘8)得到的。为了保证每个分片都是8的整数倍。
  **8位生存时间(Time To Live)**是数据报到达目的地之前允许经过的路由器的跳数(一般设置为64跳)每经过一个路由器,该值减1,直到为0.就丢弃该数据报。
  8位协议是区分上层协议:ICMP是1,TCP是6,UDP是17.
  16位头部检验和通过CRC检查是否该IP数据报损坏。

IP模块工作流程图

在这里插入图片描述

路由机制

  IP的路由机制包括以下3部
  (1)、查找路由表中和数据报中的目标IP地址是否具有完全匹配的主机IP地址,如果没找到就进行第2步
  (2)、查找路由表中和数据报中的目标IP地址具有完全相同的网路ID的IP地址,如果找到就使用该路由项。否则转第3步
  (3)、选择默认路由项,这表示下一跳地址是网关地址。
  其中路由表中的数据是实时更新的以反映网络的连接情况

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值