网络协议复习

不同协议所属的层次如下图:

IP

       IP地址一开始是分类编址,到了20世纪90年代更换为无分类编址。分类编址时IP地址共有五类ABCDE。对于ABC类地址,IP地址都可以划分为网络标识和主机标识。从一个IP地址中提取网络地址要用网络掩码和IP地址进行与运算。IP地址最初是两级编址,但是这会存在极大的地址浪费,并且不利于管理。在子网划分中,一个网络被划分成若干个较小的子网络,其中每个子网都有自己的子网掩码。

       每个网络中都有两个特殊地址:主机标识为0表示网络地址,不指向某个主机;主机标识全为1表示直接广播地址,所有主机都会接受这种类型的目的地址的分组。

IP是一种不可靠的无连接数据报协议,分组可能在四种情况下丢失:1)校验失败;2)TTL超时;3)途中路由器不能分片;4)途中路由器缓冲区溢出导致丢包。

和分片相关的字段有:标识、标志和分片偏移。其中分片偏移表示的是分片在整个数据报中的相对位置。这是数据在原始数据报中的偏移,以8字节为度量单位。

IP分组中的校验和仅覆盖首部,而不管数据。校验和的计算为:将分组首部划分为n位的段(n通常为16)。把这些段反码相加,得到的和的长度也是n位。再把这个和取反码就得出校验和。接收端解析时,只需要将首部反码相加然后取反码,判断是否为0即可。

ARP

一个IP分组可以通过咨询路由表找出下一跳的IP地址。但是,既然IP使用的是数据链路层的服务,它就需要知道下一跳的物理地址。通过ARP可以做到这一点。

IP地址是逻辑地址,MAC地址是物理地址。ARP把逻辑地址映射为物理地址,RARP把物理地址映射为逻辑地址。

任何时候,当主机或路由器需要找出这个网络上的另一个主机或路由器的物理地址时,它就可以发送一个ARP查询分组。这个分组包括发送方的物理地址和IP地址以及接收方的IP地址。因为发送方不知道接收方的物理地址,所以这个查询分组会在网络上进行广播。网络上的每一台主机或路由器都会接受并处理这个ARP查询分组,但只有期待的接收方才能认出是自己的IP地址,并返回一个ARP响应分组。这个响应分组包含有接收方的IP地址和物理地址。这个分组利用收到的查询分组中的物理地址以单播方式直接发送给查询者。

ICMP

IP协议没有差错报告或差错纠正机制。IP协议还缺少主机和管理查询所需要的机制。ICMP是为了弥补上述缺陷设计的。

ICMP本身是一个网络层协议。但是,它的报文并不是直接传递给数据链路层。实际上,ICMP报文首先要封装成IP数据报,然后才被传递到下一层。

ICMP报文分为两类:差错报告报文和查询报文。ICMP利用源IP地址把差错报文发送给数据报的源点。

单播路由协议

今天的互联网非常庞大,以至于仅使用一种路由选择协议无法处理更新所有路由器的路由表。为此,互联网需要划分为多个自治系统。一个自治系统就是在一个管理机构管辖下的一组网络和路由器。在AS内部的路由选择称为域内路由选择。AS之间的路由选择称为域间路由选择。AS内可以选择一个或多个路由选择协议,但是AS之间只能使用一种域间路由选择协议。

域内有两种路由选择协议:距离向量和链路状态。域间有一种路由选择协议:路径向量。路由信息协议(RIP)是对距离向量协议的实现。开放最短路径优先(OSPF)协议是对链路状态的实现。边界网关协议(BGP)是对路径向量协议的实现。

运输层

运输层协议的首要任务是提供进程到进程的通信。

运输层需要在两个层次实现流量控制:从发送方的运输层到发送方的应用层以及从接收方的运输层到发送方的运输层。可以看出,流量控制的通信可以通过从消耗者向生产者发送信号来实现。当发送的运输层缓存满溢时,它就通知应用层停止传递报文块,而当它又有了空位置时,就通知应用层继续传递报文块。当接收方的运输层满溢时,它就通知发送方的运输层停止发送分组,而当它又有空位置时,就通知发送方的运输层继续发送分组。

差错控制需要解决下面的问题:1)检测并丢弃损坏的分组;2)识别重复的分组并丢弃它们;3)跟踪丢失和丢弃的分组并重传它们;4)保存失序到达的分组,直至缺失的分组全部抵达。

TCP

序号:定义了指派给本报文段第一个数据字节的编号。

HLEN(首部长度):这个4位段指出TCP首部一共有多少个4字节。

窗口尺寸:发送方允许的接收窗口大小,表示发送方现在可以接收多少数据。

校验和:与UDP一样,但是UDP的校验和是可选的,TCP是强制性的。校验部分包括:伪首部、TCP首部和应用层的数据。

TCP建立连接利用三步握手:客户首先发送一个SYN报文段,然后服务器回复一个SYN+ACK报文段,最后客户端发送一个ACK报文段。SYN报文段不携带任何数据,但是它要消耗一个序号,即当发送数据时,序号应当加1。

TCP终止连接也是通过三步握手:首先客户TCP收到客户进程发来的关闭命令后,就发送一个FIN报文,之后服务器发送一个FIN+ACK报文段,最后客户TCP发送一个ACK报文段。FIN报文段不携带数据,但是要消耗一个序号。

DHCP

一台主机启动后,DHCP是第一个运行的客户/服务器应用程序。也即,当一台主机启动后,如果他认为自己应当连接到Internet,但又不知道自己的IP地址,DHCP就以引导程序的身份发挥作用。

当前计算机要连接到网络需要四种信息:1)计算机的IP;2)计算机的子网掩码;3)一个路由器的IP地址;4)DNS服务器的IP地址。

在DHCP之前,RARP也曾被用来从一个物理地址映射为一个IP地址。但是现在已经被淘汰,原因有二:1),RARP利用了数据链路层的广播服务,这也就表示每个网络上都必须存在一台RARP服务器;2)RARP只能提供计算机的IP地址,但如今的计算机需要上述四种信息。

转载于:https://www.cnblogs.com/wanghuaijun/p/6344498.html

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

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

相关文章

CSDN-markdown编辑器使用手册

Markdown手册欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也…

Office 365身份认证管理-添加并验证联合认证域

首先需要安装MicrosoftOnlineServicesSign-inAssistant接受许可并安装安装完成接着安装WindowsAzureActiveDirectoryModuleforWindowsPowerShell安装程序启动接受许可设置安装路径开始安装安装完毕登陆并打开office365管理中心,选择添加一个域开始域添加向导输入我们…

Linux 驱动面试题总结

1、 Linux设备中字符设备与块设备有什么主要的区别?请分别列举一些实际的设备说出它们是属于哪一类设备。 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备…

codevs1040统计单词个数(区间+划分型dp)

1040 统计单词个数 2001年NOIP全国联赛提高组 时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题目描述 Description给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个)。要求将此字母串分成k…

翻译词典推荐

前言 今天在看一个API,遇到一些生词不会,花了些时间在选择词典上面,做个总结。 我的经历 先说说我使用词典的经历吧: 无网络条件:首选金山词霸,词霸本身1G多安装包配合将近2G的词典包,即便是断网…

用URLGather来管理和保存你的页面

下载链接:http://url-gather.software.informer.com/download/#downloading安装的过程简单,这里不一一叙述。安装成功后,找到软件安装的路径,如下:进入软件之后,你只要熟悉以下的功能就能轻松的管理你的网站…

Exynos4412 中断处理流程详解

Linux 中,当外设触发中断后,大体处理流程如下: a -- 具体CPU architecture相关的模块会进行现场保护,然后调用machine driver对应的中断处理handler; b -- machine driver对应的中断处理handler中会根据硬件的信息获取…

XPath学习笔记

XPath语法 XPath使用路径表达式选取XML文档中的节点或者节点集。 路径表达式 表达式描述nodename获得该节点下的所有节点/从根节点开始//从匹配选择的当前节点开始,不考虑位置.选取当前节点…选取当前节点的父节点选取属性 比如: 表达式描述nation选…

Exynos4412 中断驱动开发相关问题总结

1、Linux 中如何标识一个外部中断? 在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断: a -- IRQ number CPU需要为每一个外设中断编号,我们称之IRQ Number。这个IRQ number是一个虚拟的interrupt ID,和硬…

delphi 最全日期格式_DateUtils时间单元说明

DateUtils时间单元说明 CompareDate 函数 比较两个日期时间值日期部分的大小 CompareDateTime 函数 比较两个日期时间值的大小 CompareTime 函数 比较两个日期时间值时间部分的大小 DateOf 函数 去除日期时间值的时间部分 DateTimeToJulianDate 函数 转换日期时间值为儒略日 Da…

python基础学习笔记

变量赋值 赋值运算符 是主要的赋值运算符,其他的是增量赋值运算符。 aint 12 astring python afloat 3.14 alist [1,3,4]赋值并不是将一个值赋给一个变量。python中对象是通过引用传递的,是将对象的应用传递给变量。 >>> x1 >>&g…

Exynos4412 IIC 总线驱动开发相关问题总结

一 、问题 1、IIC总线上的设备是怎么描述的? struct i2c_client{struct device dev;...};2、IIC总线上的驱动是怎么描述的? struct i2c_driver {struct device_driver driver;};3、IIC总线上的设备和驱动是怎么匹配的 1)、对于 Cortex - A8 通过driver…

sersync+rsync实现实时同步

在分布式应用中会遇到一个问题,就是多个服务器间的文件如何能始终保持一致。一种经典的办法是将需要保持一致的文件存储在NFS上,这种方法虽然简单方便但却将本来多点的应用在文件存储上又变成了单点,这违背了分布式应用部署的初衷。为了保留多…

Python爬虫利器五Selenium用法

在上一节我们学习了 PhantomJS 的基本用法,归根结底它是一个没有界面的浏览器,而且运行的是 JavaScript 脚本,然而这就能写爬虫了吗?这又和 Python 有什么关系?说好的 Python 爬虫呢?别急,接下来…

Cronolog 分割 Tomcat8 Catalina.out日志 (转)

默认情况下,tomcat的catalina.out日志文件是没有像其它日志一样,按日期进行分割,而是全部输出全部写入到一个catalina.out,这样日积月累就会造成.out日志越来越大,给管理造成了不便,为了实现像其它日志文件…

Exynos4412 IIC总线驱动开发(二)—— IIC 驱动开发

前面在Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析 中学习了IIC驱动的架构,下面进入我们的驱动开发过程 首先看一张代码层次图,有助于我们的理解 上面这些代码的展示是告诉我们:linux内核和芯片提…

Python爬虫利器六PyQuery的用法

你是否觉得 XPath 的用法多少有点晦涩难记呢? 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢? 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢? 你是否已经有了一些前端基础了解选择器却与另外一些奇怪的选择器语法混淆了…

windows10下载

http://care.dlservice.microsoft.com/dl/download/F/5/7/F574727C-B145-4A7D-B85B-11C4E8DC894B/9841.0.140912-1613.FBL_RELEASE_CLIENTENTERPRISE_VOL_X64FRE_ZH-CN.ISO转载于:https://www.cnblogs.com/thankyouGod/p/6366971.html

Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析

关于Exynos4412 IIC 裸机开发请看 :Exynos4412 裸机开发 —— IIC总线 ,下面回顾下 IIC 基础概念 一、IIC 基础概念 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I…

Python 爬虫进阶一之爬虫框架概述

综述 爬虫入门之后,我们有两条路可以走。 一个是继续深入学习,以及关于设计模式的一些知识,强化 Python 相关知识,自己动手造轮子,继续为自己的爬虫增加分布式,多线程等功能扩展。另一条路便是学习一些优秀…