服务器编程入门(2)IP协议详解
2 IPV4头部结构

- 4位版本号:指定IP协议的版本,值为4。
- 4位头部长度:标识该IP头部有多少个32bit(4字节)。IP头部最长是60字节。
- 8位服务类型(TOS):包括3位优先权字段,4位TOS字段(只有一位能置1,分别表示最小延迟、最大吞吐量、最高可靠性、最小费用),和1位保留字段(必须置0)。
- 16位总长度:指整个IP数据报的长度,以字节为单位,因此IP数据包的最大长度为65535。但由于MTU的限制,长度远超MTU的数据报都将被分片传输。
- 16位标识:唯一地标识主机发送的每一个数据报。同一个数据报的所有分片都具有相同的标识值。
- 3位标志字段:第一位保留,第二位"禁止分片"(超过MTU即被丢弃),第三位"更多分片",除了数据包的最后一个分片外,其他分片都要把它置1。
- 13位分片偏移:分片相对原始IP数据报开始处的偏移。实际的偏移值是该值左移3位(乘8)后得到的,由于这个原因,每个IP分片的数据部分的长度必须是8的整数倍。
- 8位生存时间(TTL):是数据报到达目的地之前允许经过的路由器跳数。发送端设置,经过一个路由器,该值就被减一,减为0则丢弃,返回一个ICMP差错报文。防止路由循环。
- 8位协议:用来区分上层协议。ICMP:1;TCP:6;UDP:17。
- 16位头部检验和:发送端填充,接收端对其使用CRC算法以检验IP数据报头部在传输过程中是否损坏。
- 32位源端IP地址和目的端IP地址:标识数据报的发送端和接收端。
- 可选字段:最长40字节,包括记录路由,时间戳,松散源路由选择,严格源路由选择。

| 十六机制数 | 十进制表示 | IP头部信息 |
| 0x4 | 4 | IP版本号 |
| 0x5 | 5 | 头部长度为5个4字节,即20字节 |
| 0x10 | TOS字段分别为1000,表示最小延迟开启 | |
| 0x003c | 60 | IP数据报总长度为60 |
| 0xa5d5 | 数据报的唯一标识 | |
| 0x4 | 禁止分片 | |
| 0x000 | 分片位移 | |
| 0x40 | 64 | 生存时间为64跳 |
| 0x06 | 6 | 协议类型:TCP协议 |
| 0x96cf | 头部校验和 | |
| 0x7f000001 | 两个:分别表示源主机地址和目的主机地址 |
这个报是使用telnet远程登陆时抓去的,由此可见,telnet使用的是最小延时服务,默认使用传输层协议是TCP协议。IP数据报没有分片,因为没有携带任何应用程序数据。
3 IP分片


- IP模块接收到来自数据链路层的IP数据报
- 对数据报头部做CRC校验
- 查看是否是发给本机
- 如果是发给本机则转交给上层应用
- 如果不是则转交给"数据报转发子模块"
- 如果不允许转发,则丢弃;允许转发则一些操作后交给"IP数据报输出子模块"
- 更新路由表,"计算下一跳路由"子模块计算下一跳路由
- 交给IP输出队列

| 字段 | 含义 |
| Destination | 目标网络或主机 |
| Gateway | 网关地址,*表示目标和本机在同一个网络,不需要路由 |
| Genmask | 网络掩码 |
| Flags |
路由项状态标志: U: 活动的 H:目标是一台主机 G:目标是网关 D:重定向生成的 M:重定向修改过 |
| Metric | 路由距离,即达到指定网络所需的中转数 |
| Ref | 路由项被引用的次数 |
| Use | 被使用的次数 |
| Iface | 该路由项对应的输出网卡接口 |
- 查找路由表中和路由报的目标IP地址完全匹配的主机IP地址。如果找到,就使用该路由项,没有找到则转步骤2
- 查找路由表中和数据报的目标IP地址具有相同网络ID的网络IP地址,如果找到,则使用该路由项,没有找到则转步骤3
- 选择默认路由项,这通常意味着数据报的下一跳路由是网关
- 检查数据报头部的TTL值,如果TTL值已经是0,则丢弃该数据报
- 查看数据报头部的严格源路由选择项,如果该选项被设置,则检测数据报的目标IP地址是否是本机的某个IP地址,如果不是,则发送一个ICMP源站选路失败报文给发送端
- 如果有必要,则给源端发送一个ICMP重定向报文,以告诉它一个更合理的下一跳路由器
- 将TTL值减1
- 处理IP头部选项
- 如果有必要,则执行IP分片操作


服务器编程入门(2)IP协议详解的更多相关文章
- linux高性能服务器编程 (二) --IP协议详解
第二章 IP协议详解 什么是IP协议:IP 协议是TCP/IP协议族的动力,它为上层提供了无状态.无连接.不可靠的服务. IP 头部信息:头部信息会出现在每一个IP数据报上,便于记录IP通信的源端IP ...
- 【转载】TCP /IP协议详解
首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...
- TCP/IP协议详解---概述
工作之后,才发现以前在学校里学的东西忘得太快太干净了,现在需要一点点地捡起来了,要不然写几行程序会闹很多笑话会出现很多bug的.从今天开始,翻一翻<TCP/IP协议详解 卷1>这本 ...
- 第二章 IP协议详解
第二章 IP协议详解 2.1 IP服务的特点 它为上层协议提供了无状态,无连接,不可靠的服务 名称 简介 优点 缺点 对付缺点的方法 无状态 IP通信双方不同步传输数据的状态信息 无须为保持通信的状态 ...
- TCP /IP协议详解【转】
转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...
- TCP/IP协议详解概述
TCP/IP协议详解卷1--第一章概述--读书笔记 作者:vpoet 日期:2015/06/25 注:本系列的文章只是作者对TCP/IP协议的理解,难免会出现纰漏或者不完整,当然也有可能很肤浅,希望大 ...
- IP协议详解(转)
本文转载自博文协议森林05 我尽力 (IP协议详解).这篇博文写的很有趣味,特转载! IPv4与IPv6头部的对比 我们已经在IP接力中介绍过,一个IP包分为头部(header)和数据(payload ...
- (转)协议森林05 我尽力 (IP协议详解)
协议森林05 我尽力 (IP协议详解) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! IPv4与IPv6头部的对比 我们已经在I ...
- Linux 高性能服务器编程——IP协议详解
1 IP服务特点 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. 无状态:IP通信双方不同步传输数据的状态信息,因此IP数据包的发送.传输和接收都是无序的. ...
随机推荐
- 零基础数据分析与挖掘R语言实战课程(R语言)
随着大数据在各行业的落地生根和蓬勃发展,能从数据中挖金子的数据分析人员越来越宝贝,于是很多的程序员都想转行到数据分析, 挖掘技术哪家强?当然是R语言了,R语言的火热程度,从TIOBE上编程语言排名情况 ...
- uvc摄像头代码解析5
8.初始化uvc控制 8.1 重要结构体 struct uvc_control { //uvc控制 struct uvc_entity *entity; //uvc实体 struct uvc_cont ...
- 菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t
菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...
- Qt Quick鼠标事件处理、键盘、计时器
在<Qt Quick 事件处理之信号与槽>中介绍了 QML 中怎样使用内建类型的信号以及怎样自己定义信号,这次我们来看看怎样处理鼠标.键盘.定时器等事件.这些时间在处理时,一般是通过信号来 ...
- Keepalived安装工具
装keepalived前,要先检查主机上是否已经安装, ps -ef | grep keepalive 不检查的话.easy把前人装的东西覆盖掉,那么曾经弄的配置文件都没了比較麻烦. 下面都为root ...
- 圆角和圆形ImageView
※效果 ※代码 /** * 转换图片成圆形 * * @param bitmap * 传入Bitmap对象 * @return */ public Bitmap toRoundBitmap(Bitmap ...
- CButtonEx的实现
要想修改CButton类按钮背景颜色和文字颜色,必须利用自绘方法对按钮进行重新绘制.这可以通过定义一个以CButton为基类的新按钮类来实现.以下为具体的实现方法: 方法一: 加入一个新类,类名:CB ...
- lastIndexOf方法——获取字符最后的索引
1.2.20 lastIndexOf方法——获取字符最后的索引 2013-08-29 14:55:18 我来说两句 收藏 我要投稿 本文所属图书 > Java程序开发参考手册 ...
- java大牛list
1 Java的未来 Java能干什么.不能干什么,一开始就要搞清楚.这对于成为一个纯种的Java程序猿至关重要. 2 构建Java运行环境 Java运行在服务器,服务器都是Linux系统,对于真正程序 ...
- 打破“中规中矩”,手机QQ何以萌翻众人?
随着移动互联网的迅猛发展,越来越多的手机应用展现在了用户面前,不过,面对林林总总的手机应用,有时候我们却提不起兴趣,因为功能的同质化,UI的千篇一律已经让我们多少有些审美疲劳的感觉. ...