计算机网络理论知识: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

智能推荐

PHP生成日期序列_php组件生成日期自增数字-程序员宅基地

文章浏览阅读1k次。<?php$d0 = '2010-04-20';$d1 = '2010-04-23'; $_time = range(strtotime($d0), strtotime($d1), 24*60*60);$_time = array_map(create_function('$v', 'return date("Y-m-d", $v);'), $_time);print_..._php组件生成日期自增数字

JFreeChart简介及下载、配置-程序员宅基地

文章浏览阅读686次。JFreeChart简介JFreeChart是完全基于Java语言的开源项目,因此可以使用在Java开发环境中,包括Java应用程序,或者是Java Web应用都没有任何问题。结合iText项目,可将生成的统计图表输出到PDF文件中;结合最新的POI项目,也可以将生成的统计图表输出到Excel文档中。JFreeChart可用于生成各式各样的统计图表,只要开发人员提供符合JFreeCha..._jfreechart依赖下载

cpu_detected cpu family 6 model 106-程序员宅基地

文章浏览阅读592次。————监控系统的状态————1.查看当前系统的负载 w命令[root@localhost ~]# w11:41:05 up 1:42, 2 users, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 18:07 ? 0.41s 0.41s ..._detected cpu family 6 model 106

Java Swing JTable 表格【7:监听表格数据变化】_jtable监听-程序员宅基地

文章浏览阅读1.6w次,点赞11次,收藏51次。监听表格数据变化 终于进入到JTable的重头戏了,监听在任何Java项目中都是非常重要的,监听带来的一系列的操作也有时候非常复杂 在Excel表格中,当表格中的一个单元格的数据发生变化时,与之相关的数据也会同时发生变化,这就设计到表格监听器的知识。JTable的事件大致均针对表格内容的操作处理,包括字段内容改变、列数增加或减少、行数增加或减少、表格的结构改变等。这些事件称为Table_jtable监听

CSS选择器权重问题_分组选择器权重单独计算-程序员宅基地

文章浏览阅读214次,点赞14次,收藏10次。摘要:关于css选择器权重问题_分组选择器权重单独计算

zeppelin集成openldap,以及admin用户设置_zeppelin能建账号吗-程序员宅基地

文章浏览阅读2.2k次。之前写过一篇文章集成FreeIPA,今天尝试集成OpenLdap,出现了一些问题,这里记录下配置过程修改zeppelin-site.xml<property> <name>zeppelin.anonymous.allowed</name> <value>false</value> <description>An..._zeppelin能建账号吗

随便推点

The constructor Service(URL, QName, WebServiceFeature[]) is undefined-程序员宅基地

文章浏览阅读697次。Service(URL, QName, WebServiceFeature[]) is undefined 原因是CXF自带的javax.xml.service 版本高过 jdk的javax.xml.service。 一个解决办法是: 在使用wsdl2java时,加入参数 -frontend jaxws21 这个问题的消息解释可以在这里看到 : http://david-commerce.itey..._the constructor service(url, qname, webservicefeature[]) is undefined

eq(equal)等于,ne neq(not equal)不等于,gt(greater than)大于 (smarty)_eq等于-程序员宅基地

文章浏览阅读1w次。eq相等 ne、neq不相等, gt大于, lt小于 gte、ge大于等于 lte、le 小于等于 not非 mod求模 is [not] div by是否能被某数整除 is [not] even是否为偶数 is [not] even by $b即($a / $b) % 2 == 0 is [not] odd是否为奇 is not odd by $b即($a _eq等于

centos8使用war包安装部署jenkins以及初始化配置_centos 8 jenkins.war启动-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏3次。centos8使用war包安装部署jenkins以及初始化配置准备工作安装jdk并配置环境变量安装maven并配置环境变量先检查是否安装maven安装maven创建目录下载解压移动配置环境变量检查是否安装成功配置maven国内镜像安装git使用dnf安装git检查版本安装tomcat并设置为开机自启动创建目录下载解压移动至/usr/local/tomcat目录下启动加入systemctl管理并设置为开机自启动修改catalina.sh文件创建tomcat服务文件重载服务列表启动tomcat服务tomcat设_centos 8 jenkins.war启动

Unity 通过LineRenderer绘制两点之间的直线_line.material = new material(shader.find("particle-程序员宅基地

文章浏览阅读2.7w次,点赞5次,收藏43次。private LineRenderer line;//画线line = this.gameObject.AddComponent();//只有设置了材质 setColor才有作用line.material = new Material(Shader.Find("Particles/Additive"));line.SetVertexCount(2);//设置两_line.material = new material(shader.find("particles/additive"));

Ubuntu命令模式基础-程序员宅基地

文章浏览阅读70次。Ubuntu是一个自由、开源、基于Debian的Linux发行版。在ubuntu的基础上,又衍生其它各具特色的Linux发行版。首先是一个操作系统,操作系统用于管理电脑硬件。要发挥出电脑的作用,还得依靠安装各种应用软件。(1)查看当前文件夹下的目录 ①、ls (list的缩写)命令用于列出文件和目录。默认上,他会列出当前目录的内容。带上参数后,可以以不同的方式显示。如图:ls..._ubuntu命令缩写的输入必须进入插入模式

openlayers 如何调用geoserver发布的wms服务_geoserver 获取openlayer预览地址-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏6次。如何调用geoserver发布的wms服务启动geoserver,点击左侧导航工具栏中的Layer Preview找到自己相应调用的图层,点击Openlayer进行预览,如下图:在浏览器的地址栏中,http://localhost:8080/geoserver/sf/wms即为调用wms服务的url地址,还会有相应的版本号,请求类型,图层名等;利用如下代码,即可调用geoser..._geoserver 获取openlayer预览地址

推荐文章

热门文章

相关标签