计算机网络中的协议

物理层



物理层考虑的是怎样才能连接各种计算机传输媒体上传输的数据比特流,而不是具体的传输媒体,用于物理层的协议叫做物理层的规程。

数据链路层



对于点对点的链路,PPP协议书目前应用最广泛的数据链路层协议

PPP协议的组成

1)一个将数据报封装到串行链路的方法,PPP既支持异步链路,有支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分。

2)一个用来建立,配置和测试数据链路连接的链路控制协议LCP。通信双方可协商一些选项。链路控制,PPP为用户发起呼叫以建立链路,在建立链路是协商以参数选择,通信过程中随时测试链路。

3)一套网络控制协议NCP,其中的每个协议支持不同的网络层协议。如IP、OSI。来为上层提供服务接口。针对上层不同的协议类型,会使用不同的NCP组件。如对于IP提供IPCP接口,对于IPX提供IPXCP接口,对于APPLETALK提供ATCP接口等。

CSMA/CA协议是重要的一个协议

工作流程

1.送出数据前,监听媒体状态,等没有人使用媒体,维持一段时间后,才送出数据,由于每个设备的随机时间不同,所以可以 减少冲突的时间。

2.送出数据之前,前进行一小段的请求传送报文给目标端,等待目标端回应CTS(clear to send)报文后,才开始传送。利用RTS-CTS握手程序,确保接下来的传送资料时,才不会发生碰撞。由于RTS-CTS封包很小,让传送的无效开销很小。

工作原理

1)首先检测信道是否有用,如果检测出信道繁忙,则等待一段时间后,才送出数据。

2)接收端如果能收到此帧,则过一段时间间隔后,向发送端发出确认帧ACK。

3)发送端收到ACK帧,确定数据正确传输,则经历一段时间间隔后,会出现一段空闲时间。

CSMA/CD协议提供寻址和媒体存取的控制方式,使得不同设备或网络上的节点可以在多点的网络上通信而不产生冲突。

作用:在传统的共享以太网中,所有节点共享传输介质,如何保证传输介质有序、高效地为许多节点提供传输服务,就是以太网的介质访问控制协议要解决的问题。

工作原理

发送数据前先帧听信道是否空闲,若空闲,即立即发送数据,若信道忙碌,则等待一段时间至信道中的信息传输结束后再发送数据;若上一段信息发送结束后,同时又两个或者两个以上节点都提出发送请求,则判定为冲突,若帧听到冲突,即停止发送数据,等待一段随机时间再尝试。、

所谓载波帧听,意思就是网络上个工作站在发生数据前要帧听总线上有没有数据传输。

所谓冲突就是若网络上有两个或者两个以上的工作站同时发送数据,就会产生信号的混合,两个工作站都辨不出什么,这种情况又称数据冲突又称碰撞。

CSMA/CA和CSMA/CD协议的主要差别

CSMA/CD:带有冲突检测的载波监听多路访问,可以检测冲突,但无法避免。

CSMA/CA:带有冲避免的载波帧听多路访问,发送包的同时不能检测到信道上有无冲突,只能尽量“避免”。

1.两者传输介质不同,VSMA/CD用于总线式以太网,而CSMA/CA则用于无线局域网等。

2.检测方式不同,CSMA/CD通过电缆中的电压变化来检测,CSMA/CA采用能量检测(ED),载波检测(CS),和能量载波混合检测三种检测信道忙闲的方式。

3.WALN中,对于某个节点来说,刚发出的信号强度远远大于来自其他节点的信号强度,也是说自己的信号会把其他节点的信号覆盖掉。

4.本节点有冲突,并不意味着其他节点有冲突。

综上。WALN中实现CSMA/CD是比较困难的。

网络层



网际协议IP

与IP协议配套使用的还有以下几种协议

1).地址解析协议ARP

2)逆地址解析协议RARP

3)网际控制协议ICMP

4)网际组管理协议IGMP

IP协议:如果有许多计算机通过一些路由器进行互联,由于参加的计算机网络都使用相同的网际协议IP,因此互联之后的计算机网络构成了虚拟互联网络。IP协议就能使这些性能各异的网络在网络层上看起来像一个统一的网络。

ARP:已经知道了一个机器(主机或路由器)的IP地址,需要找出相应的物理地址。

RARP:已经找到了物理地址,需要相应的IP地址。

ICMP:允许主机或路由器报告差错情况和提供有关的异常报告情况。

ICMP差错报告有5种

  1. 终点不可达:当路由器或主机不能交付数据报时
  2. 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,向发送源点发送抑制报文。
  3. 时间超时:当路由器收到生存时间为零的数据报时丢弃数据报,并发送超时报文。
  4. 参数问题:当路由器或目的主机收到数据报首部中有的字段值不正确时。丢弃数据报并发送参数问题的报文。
  5. 改变路由(重定向)。把改变路由的报文发送给主机。以便下次正确找到。

不应该发送ICMP差错报文的几种情况

  1. 不能对差错报告再发送差错报告
  2. 对第一个时间片所有后续数据报片不发送ICMP差错报告。
  3. 对具有多播地址的数据报不发送ICMP差错报告。
  4. 对具有特殊地质(如127.0.0.0或0.0.0.0)的数据报并不发生ICMP差错报告。

ICMP的应用举例

  1. PING:分组网间探测PING同来测试两个主机之间的连通性。PING使用了ICMP会送请求与会送回答报文。PING是应用层直接使用网络层ICMP的例子。没有通过传输层UDP和TCP
  2. Tracerout:用来跟踪从原点到终点的路径。发送一连串的IP数据报,数据报中封装的是无法交付的UDP数据报,第一个数据报P1生存时间设置为1,当到达第一个路由器R1时,收下他,并把生存时间TTL减1,由于TTL等于0了,R1就把P1丢弃了,并向源主机发送ICMP时间超过报文。源主机接着发送第二个报文,并把TTL设置为2,若到达R2路由器TTL为0,则向源主机发送ICMP不可达报文。同样的道理,知道最后一个ICMP不可达报文是有目的主机发送。

路由选择协议

内部网关协议IGP:若RIP和OSPF等

外部网关协议EGP:BGP

RIP协议的特点:

(1)仅和相邻的路由器交换信息

(2)路由交换信息是当前本路由器所知道的全部信息,即自己的路由表。

(3)按固定时间间隔交换信息,例如,30秒。

OSPF的特点是不像RIP那样是面向距离的,

(1)像本自制系统的所有路由器发送信息

(2)发送信息就是与本路由器相邻的所有路由器的链路状态。所谓链路状态,就是本路由器和哪些路由器相邻。

(3)只要链路状态发送变化时,路由器才像所有路由器用洪范法发送信息。

BGP:不同的AS(自治系统)的路由器之间交换信息的协议。BGP只能是力寻一条能够到达目的网络的且比较好的路由,BGP采用了路径向量路由选择协议,与距离向量协议和链路协议有很大的区别。BGP发言人一般说是边界路由。

网际组管理协议IGMP

IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格的讲是主机上的某个进程)参加或退出了某个多播组。(仅有IGMP还不能完成多播任务,还需要使用多播路由选择协议)

运输层



用户数据报协议UDP

该协议只在IP数据报服务上增加了一点小小的功能。它的特点是:

  1. 是无连接的:发送之前不需要建立练接
  2. 尽最大的努力交付:即不保证可靠交付,因此主机不需要维持复杂的练接状态表。
  3. UDP是面向报文的:UDP一次交付完整的报文,既不合并也不拆分。交给IP层后,若太长,可能进行分片。
  4. UDP没有拥塞控制:网络中出现拥塞不会是源主机的发送效率降低,对某些实时应用是很重要的,如IP电话,实时视频会议等,要求源主机以恒定速度发送数据。并且允许网络发送阻塞时丢失一些数据,但不允许有太大的时延。
  5. UDP支持一对一,一对多,多对一和多对多的交互通信。
  6. UDP的首部开销小。只要8个字节,TCP20个字节。

传输控制协议TCP

1.面向连接的传输协议。应用程序在使用TCP协议之前,必须建立练接,传输数据完毕后必须释放连接

2.每一条TCP只能连接两个端点

3.TCP提供可靠交付服务:TCP传输数据无差错,不丢失,不重复,且按序到达。

4.TCP提供全双工服务:允许通信双发的应用进程在任何时候都发送数据,两端都设有发送缓存和接受缓存。

5.面向字节流:虽然应用程序和TCP的交互式一次一个数据块,但TCP把应用程序交下来的数据块看出仅仅是一连串无结构的字节流。

TCP的连接建立与连接释放采用“三次握手四次挥手”的方式。问题:为什么要三次握手?

为什么A还要发一次确认呢?

只要是方式已失效的练接请求报文突然又传到B,因而产生错误。

所谓“以失效的练接请求报文”是这样差生的

(1)正常情况,发出练接请求,但因练接请求报文段丢失而未收到确认,于是又重传了一次请求,后来收到了确认,建立了连接,数据传输完毕后,释放了连接,A共发送了两个请求报文段,一个丢失,另一个到达了B。

(2)异常情况,即A发送的请求报文并没有丢失,而是在某些网络节点滞留了,以致到了连接释放后的某个时间才到达B,本来就是一个已失效的报文,但B收到实效的报文连接请求报文段后,误认为A再次发出新的连接请求,于是向A发送了确认报文段,同意建立连接,假定不采用三次握手,那么只要B发出确认,新的连接就建立了。

由于现在A并没有发出连接建立请求,故不会理睬B的确认,也不会发出数据,但B确一直以为新的连接建立了,一直等到A发来数据,B处于阻塞状态,并且好多资源都白白浪费了。

为什么主动发起连接释放的一端在收到对端的确认后,把确认报文段的ACK置1,确认好ACK=w+1,而自己的序号为seq=u+1,进入TIME-WAIT状态?

  1. 为了保证发送最后一个ACK报文段到达B,这个ACK报文段很可能丢失,因而是处在LAST-ACK状态的B收不到对自己已发送的FIN+ACK报文段确认的确认,B会超时重传这个FIN+ACK报文段,而A能在2MSL时间内收到这个重传的FIN+ACK报文段,接着,A重传一次确认。重新启动2MSL计时器。如果不等待2MSL,那么B就收不到重传的FIN+ACK报文段,因而也不会再一次发出确认报文段,故B就无法按正常步骤进入close状态。
  2. 防止“已失效的连接”出现在本连接中,经过2MSL,可以使连接等待的时间内所有产生的报文段都从网络中消失,这样就可以使下一个新的连接中不会出现旧的连接请求报文段。

应用层



文本传输协议FTP

物理层使用的中间设备叫转发器(repeater)

数据链路层使用的中间设备叫网桥(bridge)

网络层使用的中间设备叫路由器(router)

在网络层以上使用的中间设备叫做网关(Gateway)

时间: 2024-10-13 22:24:46

计算机网络中的协议的相关文章

计算机网络体系结构与协议

1.网络协议(pmtocol)     所谓网络协议就是为进行计算机网络中的数据交换而建立的规则.标准或约定的集合.协议总是指某一层的协议,   准确地说,它是对同等层实体之间的通信制定的有关通信规则和约定的集合.网络协议包括三要素:   ①语义包括用于各种帧头及处理的控制信息.   ②语法包括数据格式.编码及信号电平等.   ③定时包括速度匹配和排序等.   2.网络的体系结构(amMeetu陪)   网络的体系结构是计算机网络各层次及其协议的集合.网络的体系结构有如下特点:   ①以功能作为

计算机网络七层协议模型 “开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)

计算机网络七层协议模型 作者:Ryan    时间:2013年10月7日 一.物理层(Physical Layer) OSI模型的最低层或第一层,规定了激活.维持.关闭通信端点之间的机械特性.电气特性.功能特性以及过程特性,为上层协议提供了一个传输数据的物理媒体. 在这一层,协议数据单元为比特(bit). 属于物理层定义的典型规范代表包括:RS-232.RS-449.RS-485.USB2.0.IEEE-1394.xDSL.X.21.V.35.RJ-45等. 在物理层的互联设备包括:集线器(Hu

计算机网络之网络协议

基本概念 网络协议为计算机网络中进行数据交换而建立的规则.标准或约定的集合. 要素 网络协议是由三个要素组成: (1) 语义.语义是解释控制信息每个部分的意义.它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应. (2) 语法.语法是用户数据与控制信息的结构与格式,以及数据出现的顺序. (3) 时序.时序是对事件发生顺序的详细说明.(也可称为“同步”). 人们形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序. 工作方式 网络上的计算机之间又是如何交换信息

iOS开发OC基础:OC中的协议

1.协议是一种为有源代码的类扩充方法的方式. 2.协议只是一系列方法的生命,就相当于一张任务清单,规定了要做的事情,但是具有的实施(也就是实现),是由服从该协议的类来实现.所以协议只有.h文件,并且不可以定义变量 3.协议的定义是以@protocol开头, + 协议的名字 <>(表示服从的协议)服从的协议写在<>之内,多个协议之间通过逗号来进行分隔,父协议中的内容就相当于子协议也具有这些内容,以@end结束. 下面的附件是协议的一个小例子,可以加深大家对协议的理解,看完之后一定要多

DNS 中的协议字段详细定义

DNS中的协议字段定义 Table of Contents 1 概述 2 DNS Classes 3 DNS OpCodes 4 DNS RCODEs 5 DNS Label Types 6 DNS资源记录 7 EDNS Version 8 DNS EDNS0 Option Codes (OPT) 1 概述 总结DNS协议中各字段的取值 2 DNS Classes Decimal Name Reference 0 Reserved RFC6895 1 Internet(IN) RFC1035 2

聊聊 iOS 开发中的协议

前言 何为协议,简单来说在OC中我们使用关键字@protocol可以声明一个协议,并在协议中添加多个属性.方法供于遵循者实现,从某个角度上来说,这是一种不同于category机制的category.在日常开发中,协议可谓无处不在,最为核心的UITableView通过协议来获取数据.完成事件处理等.下面就是一个最粗浅的协议 @protocol CustomProtocol - (void)doSomething; @end 对于协议的理解,很多的开发者依旧保留在委托-代理等于协议等认知上.然而前者

Objective-C中的协议(Protocol)和类别(Category)

1.什么是协议? 2.协议与类别的声明和使用 1.什么是协议? 在Objective-C中,不支持多继承,即不允许一个类有多个父类,但是OC提供了类似的实现方法,也就是协议.协议有点类似于Java里的接口,不同点就是在协议里,可以提供可选的方法,不要求全部继承. 协议包括正式协议和非正式协议. 正式协议:其声明一个方法列表,协议的实现者需要实现声明的方法,可以使用@required和@optional关键字指定方法必须实现或可选实现,默认为必须实现.子类会继承其父类采用的协议,一个协议本身也可以

JavaScript中伪协议 javascript:研究

将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行.如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开.这样的URL如下所示: javascript:var now = new Date(); "<h1>The time is:</h1>" + now;

Swift标准库中的协议_012_swift协议

//: Playground - noun: a place where people can play import UIKit //--Swift标准库中的协议---// //1.实例的比较:判断两个实例值是否相同 let a = 4, b = 4 a == b //(Int类型的比较) //自定义结构体类型,进行是否相等的比较 struct Games { var winCount : Int var loseCount : Int } let g1 = Games(winCount: 2