初始IP协议
一、引言
发送一段TCP数据大致需要经过:用户封装 –> TCP封装 –> IP封装 –>帧封装
Note:用户封装没啥好说的,都是客户自己决定的,在一些简单的应用情况下,这个步骤可以省去。
本篇重点讲述IP封装。
二、IP协议解析
一般的IP首部长度为20个字节,除非含有选项字段
第一行字段如下:
版本(4bit):目前版本协议好是4,所以IP有时也称为IPv4
首部长度(4bit):记录首部占用一个整型(32bit)的个数。所以,一般IP头(没有选项)
的这个字段指是5
服务类型(8bit):包括一个3bit的优先权字字段(现在已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。
总长度(16bit):总长度字段是指整个IP数据报的长度,以字节为单位。
第二行字段如下:
标识(16bit):对于发送端发送的每份IP数据报来说,其标识字都包含一个唯一的值。该值
在数据报分片时被复制到每个片中。
标志(3BIT): 标志字段用其中的一个比特来标识“更多的片”。除了最后一片外,其他每个
组成数据报的片都要把该比特置1。
标志字段中有一个比特作“不分片”位。如果这一个比特置1,IP将不对数据报
进行分片。
片偏移(13Bit):片移字段指的是该片偏移原始数据报开始除的位置。
第三行字段如下:
生存时间(8bit):生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的
生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个路由器,指就减一。当该值为0时,数据报就被丢弃,并且发送ICMP报文通知源主机。
协议(8bit):协议字段用来表示具体的封装协议。1:ICMP 2:IGMP 6:TCP 17:UDP
首部校验和(16bit):首部校验和字段是根据IP首部计算的检验和码。
第四行字段如下:
源IP地址(32bit):32bit IP源地址
第五行字段如下:
目的IP地址(32bit):32bit IP目的地址
第六行字段如下:(任选)
最后一个字段是任选项,是数据报中的一个可变长的信息。目前这些选项定义如下:
安全和处理限制
记录路径
时间戳
宽松的源站选路
严格的源站选路
初始IP协议的更多相关文章
- TCP、UDP、IP 协议分析
http://rabbit.xttc.edu.cn/rabbit/htm/artical/201091145609.shtml http://bhsc881114.github.io/2015/06 ...
- Linux内核--网络栈实现分析(四)--网络层之IP协议(上)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7514017 更多请看专栏,地址 ...
- iOS的TCP/IP协议族剖析&&Socket
原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有S ...
- TCP/IP协议分层
TCP/IP协议从上而下,层层包装: (1)应用层:HTTP (2)传输层:TCP和UDP (3)网络层(网际互联层):IP (4)数据连接层(网络接入层):为IP模块发送和接收IP数据报. (5)硬 ...
- TCP、UDP、IP协议分析
此篇文章的原创作者是:草根老师博客(程姚根) chengyaogen.blog.chinaunix.net 感谢原作者! 互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如: ...
- IP协议
因特网协议(Internet Protocol, IP)是Internet的核心协议之一, 工作在网络层.IP协议提供节点间的寻址,路由以及顺序控制, 流量控制等服务. IP协议分为IPv4和IPv6 ...
- IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...
- (网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...
- RTSP RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议
RTSP 编辑 RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwo ...
随机推荐
- 电路 - 基尔霍夫定律(KLL);节点流入电流等于流出电流。
下面是我在学习STM32 中ADC测量电压,时候接触掉ADC的测量范围在0~3.3V 之间,不满足于实际使用,用于电路知识设计电压放大电路.(图片来自野火) 上面个的电路,可以等效出一个电路公式:(V ...
- MySQL报错ERROR 1558 (HY000): Column count of mysql.user is wrong.
MySQL报错ERROR 1558 (HY000): Column count of mysql.user is wrong. 1.今天在使用MySQL创建数据库时出现如下报错: mysql> ...
- ARM 汇编学习笔记
- MVC object htmlAttributes,IDictionary<string, object> htmlAttributes 写法
MVC object htmlAttributes:new {style="color:red",width="12px",height="10px& ...
- CSS Core Technology
1. Selector Different types of selectors: Selectors can be divided into the following categories: Si ...
- configEnvironment()源码探究
该方法目的是对上面刚创建的环境对象进行相关配置,包含两步:配置属性源和配置活跃profiles. 其中配置属性源如下: 1.首先获取属性源 2.然后将默认属性源添加到属性源中 3.然后将命令行属性源添 ...
- Livepeer中文白皮书(翻译)
Livepeer Whitepaper 分布式视频流媒体传输协议及经济激励 Doug Petkanics doug@livepeer.org Eric Tang eric@livepeer.org 翻 ...
- 通过google cloud API 使用 WaveNet
Cloud Text-to-Speech 中使用了WaveNet,用于TTS,页面上有Demo.目前是BETA版 使用方法 注册及认证参考:Quickstart: Text-to-Speech 安装g ...
- php的运行流程
1.Zend引擎:Zend整体用纯C实现,是PHP的内核部分,他将PHP代码翻译(词法.语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法.实现了基本的数据结构(如:hashta ...
- tornado+websocket+mongodb实现在线视屏文字聊天
最近学了tornado和mongo,所以结合websocket 实现一个聊天功能,从而加深一下相关知识点的印象 1.websocket概览 webscoket是一种全双工通信模式的协议,客户端连接服务 ...