Linux网络编程——IP协议详解

IP协议的特点

  • 无连接:通信双方不需要建立连接,也不需要断开连接,上层协议交付的数据都必须明确指定IP地址
  • 不可靠:IP协议不保证数据能够到达接收方,只是承诺会尽最大努力去传递
  • 无状态:接受方接收的数据可能是重复的,也有可能是乱序的

关于乱序的理解
数据传输过程中IP协议只保证IP数据报里面的数据不乱序,而不能保证IP数据报有序

IP协议的报头

大小:20字节<=报头<=60字节
IP协议报头

名称含义
4位版本号标识了IPV4的版本,如SIP,PIP
4位头部长度头部结构的长度
8位服务类型3位优先权字段+1位保留字段+4位服务类型:最小延时、最大吞吐量、最高可靠性、最小费用(互斥的)
16位总长度IP数据报最大的长度
8位生存时间标志IP数据报的跳数,即经过路由器的个数,每经过一个路由器就减一,为0若还没有到接收方就丢弃 (防止产生回路)
8位协议标志上层使用的协议 TCP(6) UDP(17)
16位头部校验和只校验头部结构,因为网络层只负责数据转发,只需保证头部正确
32位源端IP地址发送端IP地址
32位目的端IP地址接收端IP地址
IP分片
  • MTU(网络最大传输单元) :一个数据报在网络中最大的长度,以太网1500字节

若超过1500字节,则会产生IP分片,为保证IP分片有序,每一个分片都有报头

16位标识
  • 同一个数据报分出的IP分片的16位标识是一样的
3位标志
  • 1位保留+1位禁止分片+1位有更多的分片
  1. 若禁止分片为1:不允许分片,若超过MTU,则将次数据报丢弃
  2. 有更多的分片:同一个IP数据报的分片,除了最后一个为0,其他必须为1
13位片偏移
  • 数据部分的第一个字节在整个IP分片的数据部分的偏移值
  • 为使13位片偏移表示16位数
    除了最后一个分片以外,前面所有分片的字节数都必须是8的倍数,这样二进制表示的最低三位始终为0,只需将高13位数左移三位即可表示16位数

IP分片不仅仅发生在发送端,在网络传输中也可能发生IP分片(路由器两端的网络不同,MTU不同)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值