计算机网络理论知识:IP数据报_ip协议采用数据报方式还是虚电路方式_刻苦驴啊的博客-程序员秘密

技术标签: 计算机网络  

目录

 

一、零散的知识点

二、电路交换与包交换

1、电路交换技术(circuit switching)

2、包交换技术(packet switching)

三、IP数据报

1、IP协议的服务模型

2、IP数据报格式

3、IP数据报的选项


一、零散的知识点

  • 每个数据链路层协议只涉及一个直连网,而网络层协议涉及整个网络。
  • 网络层协议负责确定把收到的包从哪条路径转发出去(forwarding),即路由选择功能。而具体的传送由数据链路层和物理层负责
  • 因特网提供的是尽力服务(best effort service)。

二、电路交换与包交换

1、电路交换技术(circuit switching)

电路交换技术通过在网络中连接多条物理电路形成一条通路后传送数据。物理电路可以是一条链路或者一条链路通过FDM或TDM形成的通道。

2、包交换技术(packet switching)

采用统计多路复用的方法通过网络传送数据包。有虚电路和数据报两种方式。

  • 虚电路:需要先建立连接然后才可以传送数据;有交换式虚电路和永久虚电路两种。交换式虚电路每次传送数据之前都要建立连接,传送完成后释放连接,而永久虚电路由管理员建立好后一直保持着,可以随时传送数据。(OSI中面向连接的网络服务就是虚电路服务)
  • 数据报(datagram):不需要建立连接便可以发送数据包,交换机根据数据包的目的地址转发包。(因特网采用的就是数据报交换技术)

三、IP数据报

1、IP协议的服务模型

  • IP协议是因特网的网络层协议;
  • IP协议是可路由的,即IP地址是唯一的、全局的、按层分配的。按层分配的意思是可以根据IP地址跟踪到具体某一台计算机。
  • IP协议提供尽力服务,即无连接无确认的数据报服务;
  • IP协议可以运行在任何网络上,即IP协议可以连接任何物理网络;

2、IP数据报格式

  • 头部长度:以4个字节为单位,所以一共可以表示60个字节。常规情况下头部必定包括前5行,即20个字节。
  • 总长度是整个数据报的长度,以字节为单位。
  • 标识、标志(DF,MF)和偏移量用于划分片段,其中偏移量以8个字节为单位。
  • 生存期用于记载经过的路由器数,每经过一个路由器生存期减1,当生存期为0时连路由器丢弃该数据报并发送一个ICMP包告知源主机;生存期的默认值为网络直径(网络最大路由器数量)的两倍。
  • TTL:每经过一个路由器减1;防止了数据报长时间滞留在因特网上,且限制了因特网的直径
  • 协议定义的是数据部分的协议:TCP=6,UDP=17,ICMP=1
  • 头部校验是头部的校验和,校验出错后路由器会丢弃出错的数据报;
  • 选项和填充位最多40个字节,与头部长度有关,填充位用于32位对齐;
  • 服务类型TOS,起初用于提出数据报的四种独立的服务要求(低延迟、高吞吐量、高可靠性和花钱最少)和优先权,现在被重新定义为区分服务
  • 如果不带选项的IP数据报被分段,这些片段头部的【头部校验和、MF、OFFSET、总长度】可能与原数据报头部字段的内容不一样。

  • 一个物理网络的最大传输单元(MTU)是该网络可以运载的最大有效载荷,即IP数据报的最大长度(以太网的MTU=1500).故如果一个数据报的大小大于其要承载它的网络的MTU,则路由器要先对该数据报进行分段(fragment)。
  • 源主机每次发送IP数据报时都会把标识字段加1,但在分段时同一数据报的各个段使用的标识的值保持不变。并且使用偏移量字段指出该片段的数据部分相对于原来的数据报的偏移量。
  • 上图数据报总长度为1420,包括是20B的头部和1400B的数据,MTU为532,所以需要分段,每一段都是头部+数据。由于头部为20B,所以每一段的有效载荷最大只有512B,因此1400B的数据要分为三段:512+512+376=1400;
  • MF标识符(more fragment):MF=0表示该段后面没有数据了,故如果没有收到MF=0的段则说明最后这一段丢失了。
  • OFFSET只记录了数据部分的偏移量;(以8个字节为单位)
  • 当目的主机收到该数据报的所有片段时,会将所有片段进行重组(reassemble),形成原来的数据报;接收第一段的时候即开启超时定时器准备重组数据报,如果到时间还有数据段未传送到,则丢弃该数据报的所有已被接收的片段。重组是按ID重组的。
  • DF(don't fragment):DF=1时表示不将帧划分为段,若该帧的长度大于MTU则路由器接收到的时候会丢弃它,可用于获取MTU。

3、IP数据报的选项

一般格式:

代码 1B

总长度 1B

数据 nB

选项最长为40B,常用的有7——记录路由,格式为:

  • 每个IP地址4个字节 ,故最多只能记录9个(=36B),36+代码1B+长度1B+指针1B=39B,最后一个B可以用0表示选。项列表结束。(记录的是该数据报经过的每个路由器的转出接口的IP地址);
  • 指针用于指向下一个IP地址的位置,同时也指明了记录的IP地址的个数(指针每次+4,当指针为4时表明还没有记录IP地址,若指针=16,则已经记录了3个IP地址)
  • 记录时间戳:一个时间戳4B,IP地址4B,所以最多记录4个(记录转发路由器自身的IP地址和当时时间)
  • 发包的时候可以设置TTL=N,则经过第N个路由器则会发回一个ICMP,这样可得知经过了哪些路由器。

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/D5__J9/article/details/90759182

智能推荐

淘宝技术架构变迁_sxjlinux的博客-程序员秘密

一、个人网站  2003 年 4 月 7 日,马云,在杭州,成立了一个神秘的组织。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴,去做一个神秘的项目。这个项目要求绝对保密,老马戏称“连说梦话被老婆听到都不行,谁要是透漏出去,我将追杀到天涯海角”。这份协议是英文版的,匆忙之间,大多数人根本来不及看懂,但出于对老马的信任,都卷起铺盖离开了阿里巴巴。  他们去了一个神秘的...

163邮箱的格式怎么写,如何申请电子邮箱?_163邮箱格式_贤惠的博客-程序员秘密

电子邮箱是现在工作生活中常用的沟通工具,无论是商务洽谈还是个人信息传输或者注册某些平台账号会用到电子邮箱。那么,邮箱的格式怎么写呢?如何申请电子邮箱账号?今天,小编带大家看看,目前市场使用率较高的TOM VIP邮箱是什么样的。163邮箱的格式怎么写?邮箱格式一般是:用户名@主机名.域名,比如[email protected],其中Lisa为用户名,可以是字母,也可以是字母加数字;vip.tom.com为域名,不同运营商的域名也各不相同,比如[email protected]或者[email protected]这样。T

Tkinter 组件_tkinter frame pack()方法_Noneplus的博客-程序员秘密

菜单1.Label组件标签组件显示文本和位图2.Button组件按钮组件可与函数关联3.Checkbutton组件多选按钮(常用二选一)可与函数关联4.Radiobutton组件多选按钮(常用多选一)可与函数关联5.Frame框架框架控件在复杂的布局中将组件分组6.Entry组件输入控件获取用户输入的文本信息7.Listbox组件列表框控件(常用多选,也可单选)standing-by8.Scale...

poj数学问题归类_冬天的一缕阳光的博客-程序员秘密

原文链接:http://hi.baidu.com/sunhaowenprime/item/d7faf6ea35b6dee4fb42ba2a1.burnside 定理,polya 计数法     这个大家可以看brudildi 的《组合数学》,那本书的这一章写的很详细也很容易理解。最好能完全看懂了,理解了再去做题,不要只记个公式。    * 简单题:(直接

s曲线_hoppss的博客-程序员秘密

常用曲线类型slope 曲线速度曲线是梯形, 加速曲线是方形, 所以加速度上存在阶跃, 阶跃也将造成冲击控制因子:1. 速度, 决定了速度曲线2. 加速度, 决定了加速度曲线和速度曲线s curves曲线 是不是就完全避免阶跃和冲击? 不是, s曲线提供了一种"冲击可控"的加速和减速, 其速度曲线是一种不带拐点的平滑曲线.s曲线加入了jerk 因子, jerk 一定成都上代表加速度变化造成的冲击.jerk 又叫 加加速度, 即加速度的倒数, 单位 m/s^3速度曲线平滑, 加减速

nginx add_header生效条件_QMCoder的博客-程序员秘密

http://nginx.org/en/docs/http/ngx_http_headers_module.html

随便推点

ql青龙对接傻妞和node-onebot_青龙ql clone_Aprilz_的博客-程序员秘密

(最新版尚未支持日志芝士,故安装旧版)

POJ - 1011 - Sticks (DFS + 剪枝)_zzuspy的博客-程序员秘密

题目传送:Sticks思路:DFS + 剪枝AC代码:#include #include #include #include #include #include #include #include #include #include #include #include #define LL long long#define INF 0x7fff

在IDEA中实战Git 合并&提交&切换&创建分支_小鲨鱼花花的博客-程序员秘密

在IDEA中实战Git 合并&提交&切换&创建分支工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下:假设小组中有两个人,组长小张,组员小袁场景一:小张创建项目并提交到远程Git仓库场景二:小袁从远程Git仓库上获取项目源码场景三:小袁修改了部分源码,提交到远程仓库场景四:小张从远程仓库获取小袁的提交场景五:小袁接受了一个新功能的任务,创建了一个分支并在分支上开发场景六:小袁把分支提交到远程Git仓库场景七:小张获取小袁提交的分支场景八:小张把分支合并到主

java显示系统实时时间,jsp实现页面实时显示当前系统时间的方法_weixin_39662594的博客-程序员秘密

js代码function realsystime(clock){var now=new date(); //创建date对象var year=now.getfullyear(); //获取年份var month=now.getmonth(); //获取月份var date=now.getdate(); //获取日期var day=now.getday(); //获取星期var hour=now.g...

PyCharm中如何设置切换Python Console终端的Python版本_福建首富嘿嘿嘿的博客-程序员秘密

在使用PyCharm的Python Console终端时,有时我们会需要切换终端运行的Python版本,比如下图中我的Console当前使用的版本是Python2,但是我现在想切换到Python3版本,如何做呢? 我的PyCharm版本是2018.1专业版:首先选择File——>Settings,然后进行如下操作:双击Build,Execution,Deploymen...

马士兵_JAVA自学之路(为那些目标模糊的码农们)_weixin_30797027的博客-程序员秘密

JAVA自学之路 一:学会选择为了就业,不少同学参加各种各样的培训。决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。那么究竟应该选择什么方向呢?我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了...

推荐文章

热门文章

相关标签