IP协议

IP协议只负责传送IP数据包,无法监视和控制网络中出现的一些问题,这些工作由Internet的控制协议来完成
IP是T C P / I P协议族中最为核心的协议。所有的T C P、U D P、I C M P及I G M P数据都以I P数据
报格式传输。它的特点如下:

不可靠(u n r e l i a b l e)的意思是它不能保证 I P数据报能成功地到达目的地。 I P仅提供最好
的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P有一个简单的错误
处理算法:丢弃该数据报,然后发送 I C M P消息报给信源端。任何要求的可靠性必须由上层来
提供(如T C P) 。

无连接(c o n n e c t i o n l e s s)这个术语的意思是I P并不维护任何关于后续数据报的状态信息。
每个数据报的处理是相互独立的。这也说明, I P数据报可以不按发送顺序接收。如果一信源
向相同的信宿发送两个连续的数据报(先是 A,然后是B) ,每个数据报都是独立地进行路由
选择,可能选择不同的路线,因此B可能在A到达之前先到达。

1.IP 头格式

(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。 


(2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(132位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。 


(3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。 


(4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216-1=65535字节。 

IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。 


(5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个标识并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。 


(6)标志(flag) 占3位,但目前只有2位有意义。 

 标志字段中的最低位记为MF(More Fragment)MF=1即表示后面还有分片的数据报。MF=0表示这已是若干数据报片中的最后一个 

 标志字段中间的一位记为DF(Don’t Fragment),意思是不能分片。只有当DF=0时才允许分片。 


(7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。 


(8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。 


(9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。 


(10)首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。 


(11)源IP地址 占32位。 


(12)目的IP地址 占32位。


2.分片解释

分片指的是需要传送的数据大于最大传输单元(MTU)的时候,就需要分成多个包,然后一个个发送给对方。我们在说TCP的时候,说到MSS很多人不能区分它们。通过下面的图,我想就可以完全区分它们了。


个人觉的如果通过TCP协议传输数据,到IP层的时候,可定不需要分片了。只有在通过UDP协议传送大数据的时候,需要分片。

例如:用UDP协议传送10240个字节数据


可以看到,但数据提交到网络层的时候,由于数据超过了最大传输单元,就分片了。分成多个包通过IP协议发送个对方。每个数据包最大的字节为MTU - IP头 = 1500 - 20 = 1480。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

职场故事和感悟

1. 猎头乌龙事件 05年11月的时候,我做了一个招聘主管的职位,一位朋友T推荐了她的好友L。从条件上看人很合适,聪明肯干,就是资力浅些,如果工作努力应该提高很快。我与其它两个候选人一起推荐给了客户。L与其它两人一…

zbb20180415 cs 1.6 half-life launcher已停止工作

控制面板->系统->高级系统设置->高级->性能 设置->数据保护->为除下列选定程序之外的所有程序和服务启用->添加-> 找到你的CS客户端 选择就好了-》应用 -》确定转载于:https://www.cnblogs.com/super-admin/p/8849581.html

python形参中的:*args和**kwargs区别

详细参考文章: https://blog.csdn.net/u014513323/article/details/89450573 感谢楼主分享

gitlab修改用户密码_CRM用户模块(用户密码修改)

四 密码修改1 需求分析修改当前登陆用户的登陆密码2 页面原型3 流程图 4 编写ControllerResponseBodyRequestMapping("updatePwd")public MessageModel updatePwd(HttpServletRequest request, String oldPassword, String newPassword, String confirmPassword){Mes…

ICMP协议简介

ICMP是Internet Control Message Protocol,因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据&…

vue之vuex

vuex负责vue的数据管理和共享,适用于大型项目 安装vuex npm install vuex --save; 运用vuex 主要有五大金刚: export default new Vuex.Store({//$store为了让外部可以引用state,//数据存储mutations,//行为动作actions,//异步改变state状态,也就是提交m…

项目管理中的特殊———例外管理

概念 例外管理由管理学引入领导学,也就是指领导人应将主要精力和时间用来处理首次出现的、模糊随机、十分重要需要立即处理的非程序化问题。而对于决策对象反复出现的,决策者已有固定的或例行的程序来处理的问题,即常例,由于在职业…

mysql 5.6.23 源码包安装报错_CentOS6.5_64bit下编译安装MySQL-5.6.23

标签:************************************************************CentOS6.5_64bit下编译安装MySQL-5.6.23**************************************************************一、关闭防火墙chkconfig iptables offservice iptables stop二、下载mysql源码包&…

third day- 01--文件操作

1 1、请分别介绍文件操作中不同的打开方式之间的区别:2 3 模式 含义4 r 文本只读模式5 rb 二进制模式  #这种方法,是用来传输或存储,不给人看的。6 r r 是读写模式,只要沾上r,文件必须存在7 rb …

什么是TTL

TTL是指生存时间,简单来说,它表示了数据包在网络中的时间,经过一个路由器后TTL就减一,这样TTL最终会减为0,当TTL为0时,则将数据包丢弃,这样也就是因为两个路由器之间可能形成环,如果…

python中itsdangerous模块

使用itsdangerous生成临时身份令牌 准备工作: 安装pip install itsdangerous import itsdangeroussaltsdaf#加盐,指定一个盐值,别让别人知道哦,否则就可以解密出来了 titsdangerous.TimedJSONWebSignatureSerializer(salt,expire…

微信小程序中form 表单提交和取值实例详解

2019独角兽企业重金招聘Python工程师标准>>> 我们知道&#xff0c;如果我们直接给 input 添加 bindinput&#xff0c;比如&#xff1a;<input bindinput"onUsernameInput" />&#xff0c;那么可以在 onUsernameInput 中直接使用 e.detail.value&…

matlab如何用代码导入文件_20+行Matlab代码实现文件扫描

最近刚好看到一篇回答&#xff0c;用阈值二值化处理图片水印&#xff0c;受到启发写此代码。阈值二值化适合处理只有黑白两色的图片&#xff0c;考虑到文件盖章&#xff0c;这里作者使用像素颜色替换及灰度值处理图片&#xff0c;进一步提高处理精度和能力。我们需要&#xff1…

聊聊Code Review

转载&#xff1a;https://richardcao.me/2016/09/30/Talk-About-Codereview/ 最近思考一个问题&#xff0c;如何进行高效的codereview&#xff0c;有没有好的工具可以使用&#xff0c;于是花了两三天时间在Google里淘了一番&#xff0c;这里留下记录。 Phabricator 首屈一指的c…

项目管理十大趋势

趋势一、更多中国企业成立项目管理办公室&#xff0c;项目管理办公室也发挥更大的作用 在国内&#xff0c;仍有很多企业每年有成百上千的项目实施&#xff0c;而公司却没有成立项目管理办公室&#xff0c;或者已经有了PMO&#xff0c;但是PMO仍在履行一些较为基础的职能。 没…

启动django服务器报错raise errorclass(errno, errval) django.db.utils.InternalError

问题描述&#xff1a; 启动django服务器python manage.py runserver报错: raise errorclass(errno, errval) django.db.utils.InternalError: (1366, “Incorrect string value: ‘\xE7\x94\xA8\xE6\x88\xB7’ for column ‘name’ at row 1”) 原因&#xff1a;与mysql数据库…

java单例模式之线程安全问题

单例的目的是为了保证运行时Singleton类只有唯一的一个实例&#xff0c;用于一些较大开销的操作。 饿汉式&#xff08;没有线程安全问题&#xff09;: ‘ 由于使用static关键字进行了修饰&#xff0c;只能获取到一个对象&#xff0c;从而达到了单例&#xff0c;并且在Singleton…

路由协议和路由算法的不同

网络上的主机、路由器通过路由选择算法形成路由表&#xff0c;以确定发送分组的传输路径。而路由选择协议是路由器用来完成路由表建立和路由信息更新的通信协议。

2003 r2 64 iis php mysql_关于在win2003中,iis+php+mysql 配置的问题

IIS中配置PHP服务器(iis6.0php5.2.6mysql)&#xff0c;步骤如下&#xff1a;1.我下的是php5.2.6_win32 &#xff0c;下载后&#xff0c;解压到d:\phpwin下面2.然后从其中找到一个叫php.ini-recommended的文件,更名为php.ini3.打开该文件&#xff0c;找到extension_dir ".…

448. Find All Numbers Disappeared in an Array 寻找有界数组[1,n]中的缺失数

&#xff3b;抄题&#xff3d;&#xff1a; Given an array of integers where 1 ≤ a[i] ≤ n (n size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this array. Could you do it with…