TCP/IP协议学习之IP协议首部格式
来源:互联网 发布:青岛科技大学网络 编辑:程序博客网 时间:2024/05/29 03:20
注:本文系学习《TCP/IP协议卷一》一书的学习笔记,为了描述精准,部分句子使用书中原文,或稍有不同但含义一样,这些句子会加粗标志。
IP协议是TCP/IP协议族中最核心的协议,所有TCP,UDP,ICMP,IGMP等协议的数据都以IP数据报格式传输。
IP协议是一种不可靠,无连接的的协议,任何可靠性需求都需要上层协议(如TCP协议)控制。
IP协议首部格式:
图片来自书中。
如图中标识,最高位在左边(0bit)最低位在右边(31bit),传输顺序为0~7bit,8~15bit,16~23bit,24~31bit,这种传输顺序称之为网络字节序。
按照顺序首部各字段详细描述:
4位版本:IP协议的版本号,当前Internet大部分都使用第四个版本,即IPv4。常用的还包括IPv6。
4位首部长度:IP数据报首部的长度,通常IP首部都是20个字节。注意,首部长度是用4bit表示的,单位是32bit,4字节,故一般20字节的IP数据报首部中此处的值是5,5×4=32bytes。也可以知道,IP首部最长为15×4=60bytes。
8位服务类型(TOS):现在大多数的TCP/IP实现都不支持TOS特性。
16位总长度:整个IP数据报的总长度,单位是字节,可知IP数据报最长为2^16=65535,但大部分网络的链路层MTU(最大传输单元)没有这么大,一些上层协议或主机也不会接受这么大的,故超长IP数据报在传输时会被分片。
16位标志:标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1。
3位标志:待学习。
13位片位移:待学习。
8位生存时间:TTL(Time To Live),IP数据报最多经过多路由器,每经过一个路由TTL的值就会减一,以防止没用的数据报在网络中一直存在。当TTL的值为0时,数据报就会被路由丢弃,且路由会发送一个ICMP报文通知源主机。
8位协议:根据此字段决定该数据报由上层那个协议使用,这个过程被称之为分用。
16位首部校验和:校验数据报首部在传输过程中是否出错,若计算结果与预期不符,则丢弃该数据报,但不生成差错报文,由上层发现并决定是否重传。
32位源IP地址:字面意思。
32位目的IP地址:字面意思。
选项:可选信息,可以记录路径,时间戳等,其长度必须是32bit的整数倍,若不足则用0填充(因为4位首部长度的单位就是32bit)。此选项很少使用,因为不是所有主机和路由都支持。
通过wireshark实际抓包截图,可对照学习:
- TCP/IP协议学习之IP协议首部格式
- IP协议首部规范
- TCP/IP协议总结(一)-TCP首部格式和TCP建立连接和释放连接
- TCP/IP之IP协议
- TCP/IP体系结构之网络层(IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP))
- TCP/IP协议学习
- TCP-IP协议学习
- TCP/IP协议学习
- 学习TCP/IP协议
- TCP/IP协议栈--IP首部选项字段的分析
- TCP/IP协议栈 --- 网络层(IP 首部 和分片)
- linux网络编程之IP协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)和TCP、UDP协议头结构总结
- TCP/IP协议之IP协议详解
- TCP/IP协议栈 之 IP协议
- TCP/IP协议之IP协议
- TCP/IP协议格式详解
- TCP/IP协议详解之 TCP协议学习笔记
- TCP/IP协议之TCP
- RNA-seq Data Analysis-A Practical Approach-book(2015) 笔记
- 96. Unique Binary Search Trees && 95. Unique Binary Search Trees II
- 如何动态获取到ListView控件的高度
- 【】与*的区别
- 人脸检测(2016年)
- TCP/IP协议学习之IP协议首部格式
- cocos studio 发布资源的问题
- 使用Link方式给eclipse或者myeclipse添加插件如git插件
- 局部敏感哈希(原始LSH)python实现
- datatabls动态解析数据
- 蓝桥杯 - 错误票据
- 8583报文总结
- jobs,fg,bg,command& 后台相关命令
- 1022. D进制的A+B (20)