网络协议复习

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

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管理中心,选择添加一个域开始域添加向导输入我们…

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中会根据硬件的信息获取…

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

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

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上,这种方法虽然简单方便但却将本来多点的应用在文件存储上又变成了单点,这违背了分布式应用部署的初衷。为了保留多…

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

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

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

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

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

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

1039. 到底买不买(20)

1039. 到底买不买(20) 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是&#xff0c…

Exynos4412 ADC 设备驱动开发

具体ADC硬件知识及裸机驱动请看&#xff1a; Exynos4412裸机开发 —— A/D转换器 1、原理图如下&#xff1a; 2、相关寄存器信息 ADC_BASE 0x126C0000ADCCON 0x0000 1<<0 | 1<<14 | 0X1<<16 | 0XFF<<6ADCDLY 0x000…

Python 爬虫进阶二之 PySpider 框架安装配置

PySpider官方文档 项目地址 官方文档 安装 phantomjs PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持 web 而不需浏览器支持&#xff0c;其快速、原生支持各种 Web 标准&#xff1a;DOM 处理、CSS 选择器、JSON、Canvas 和 SVG。 PhantomJS 可以用于页…

Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建

提到中断就必须了解到GIC&#xff0c;下面先了解一下GIC 一、GIC概念 GIC&#xff08;Generic Interrupt Controller&#xff09;是ARM公司提供的一个通用的中断控制器。GIC通过AMBA&#xff08;Advanced Microcontroller Bus Architecture&#xff09;这样的片上总线连接到一个…

Exynos4412 中断驱动开发(二)—— 中断处理流程分析

前面已经学习了中断的注册过程&#xff0c;下面由一张流程图来看一下当中断发生时的处理流程&#xff1a; 中断发生之后处理流程 a -- 具体的CPU architecture相关模块进行现场保护&#xff0c;然后调用machine driver执行对应的中断处理handler; b -- machine driver对应中断处…

Exynos4412 中断驱动开发(一)—— 中断基础及中断的注册过程

一、中断基础概念 所谓中断&#xff0c;指CPU在执行程序的过程中&#xff0c;出现了某些突发事件即待处理&#xff0c;CPU必须暂停当前的程序。转去处理突发事件&#xff0c;处理完毕后CPU又返回原程序被中断的位置并继续执行。 1、中断分类 a -- 内部中断和外部中断 根据中断的…

rubymine 调试 redmine

1、安装debase和ruby-debug-ide包。&#xff08;注意版本&#xff0c;rubymine 8.0.2下&#xff0c;bitnami下的版本需安装debase -v 0.2.1版本&#xff0c;网上有文章说用debase -v 0.2.2beta6。容易在rubymine启动调试时出现找不到ruby-debug-ide等错误提示&#xff09; 启动…

Linux 设备驱动中的 I/O模型(二)—— 异步通知和异步I/O

阻塞和非阻塞访问、poll() 函数提供了较多地解决设备访问的机制&#xff0c;但是如果有了异步通知整套机制就更加完善了。 异步通知的意思是&#xff1a;一旦设备就绪&#xff0c;则主动通知应用程序&#xff0c;这样应用程序根本就不需要查询设备状态&#xff0c;这一点非常类…