又要开始新的复习计划了!这几天开始复习网络了!加油!!奥里给!
OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。这是一种事实上被TCP/IP 4层模型淘汰的协议。在当今世界上没有大规模使用。
从图a来看OSI模型的七层协议主要包括:
TCP/IP 协议不是 TCP 和 IP 这两个协议的合称,而是指因特网整个 TCP/IP 协议族。从协议分层模型方面来讲,TCP/IP 由四个层次组成:网络接口层、网络层、传输层、应用层。
网络访问层(Network Access Layer)
网络访问层(Network Access Layer)在 TCP/IP 参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。
网络层(Internet Layer)
网络层(Internet Layer)是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。互联网层使用因特网协议(IP,Internet Protocol)。
传输层 传输层(Tramsport Layer-TCP/UDP)
传输层(Tramsport Layer)使源端和目的端机器上的对等实体可以进行会话。在这一层定义了两个端到端的协议:传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。TCP 是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP 是面向无连接的不可靠传输的协议,主要用于不需要 TCP 的排序和流量控制等功能的应用程序。
应用层(Application Layer)
应用层(Application Layer)包含所有的高层协议,包括:虚拟终端协议(TELNET,TELecommunications NETwork)、文件传输协议(FTP,File Transfer Protocol)、电子邮件传输协议(SMTP,Simple Mail Transfer Protocol)、域名服务(DNS,Domain NameService)、网上新闻传输协议(NNTP,Net News Transfer Protocol)和超文本传送协议(HTTP,HyperText Transfer Protocol)等。
下面针对几个层复习几个关键问题!
1.数据链路层协议中的三个基本问题?
封装成帧、透明传输、差错控制。
封装成帧:就是在一段数据的前后添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后就能根据首部和尾部的标记从接收的比特流中识别帧的开始和结束。所有因特网上的数据传输都是以分组(IP数据报)为传输单位,网络层的IP数据报传输到数据链路层就成为了帧的数据部分,在数据部分的前后增加首部和尾部就构成了帧。因此帧长就是数据部分的长度加上帧首部和尾部的长度,而首尾部最重要的功能就是帧定界(确定帧的界限)
透明传输:
当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
差错控制:
现实的通信链路都不会是理想的。这就是说,比特在传输过程中可能会产生差错: 1可能会变成0,而0也可能变成1。这就叫做比特差错。比特差错是传输差错中的一种。本小节所说的“差错”,如无特殊说明,就是指“比特差错”,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验CRC (Cyclic Redundancy Check)的检错技术。
2.CSMA/CD协议
以太网采用的协调方法是使用一种特殊的协议CSMA/CD,它是载波监听,多点接入/碰撞检测Carrier Sense Multiple Access with Collision Detetion)的缩写。
“多点接入”就是说明这是总线型网络,许多计算机以多点接入的方式连接在一-根总线上。协议的实质是“载波监听”和“碰撞检测”。
“载波监听”就是“发送前先监听”,即每-个站在发送数据之前先要检测一下总线上是否有其他站在发送数据,如果有,则暂时不要发送数据,要等待信道变为空闲时再发送。其实总线上并没有什么“载波”,“载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
“碰撞检测”就是“边发送边监听”,即适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加)。当适配器检测到的信号电压变化幅度超过一定的门限值时, 就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。
在TCP/IP中,与IP协议配套使用的还有四个协议:
地址解析协议ARP (Address Resolution Protocol)
逆地址解析协议RARP (Reverse Address Resolution Protocol)
因特网控制报文协议ICMP (Internet Control Message Protocol)
因特网组管理协议IGMP (Internet Group Management Protocol)
从一般的概念来讲,将网络互相连接起来要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备:
(1)物理层使用的中间设备叫做转发器(repeater)。
(2)数据链路层使用的中间设备叫做网桥或桥接器(bridge)。
(3)网络层使用的中间设备叫做路由器(router)"。
(4)网络层以上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。
路由器
概述:工作在第三层(网络层上)。在网络之间转发网络分组。能够提供按最佳路由转发网络分组。实现子网隔离,限制广播风暴。(目的地址无法识别时,路由器将其丢弃,而不是广播——比较网络交换机)
路由器的作用:采用存储转发的方法进行分组转发
接收并缓存IP数据分组,提取分组中的目的IP地址,然后查路由表决定转发路径。如果未查到,则丢弃该分组。
IP地址
我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是惟一的 32 bit 的标识符。
IP地址 ::= { <网络号>, <主机号>}
::= 代表“定义为”
IP地址和硬件地址的区别?
从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址是逻辑
地址是因为IP地址使用软件实现的),IP地址放在IP数据报的首部,而硬件地址则放在MAC帧的首部。
IP数据报的格式
一个 IP 数据报由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。
分组转发算法
(1) 从数据报的首部提取目的站的 IP 地址 D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连,则直接将数据报交付给目的站 D;否则是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则将数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4) 若路由表中有到达网络 N 的路由,则将数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
划分子网
IP地址=网络地址+网络内子网地址 + 主机地址
采用子网掩码(subnet mask)来分离网络号和主机号。
使用子网掩码可以找出 IP 地址中的子网部分。子网掩码格式:32比特,网络号(包括子网号)部分全为“1”,主机号部分全为“0”。
ARP协议(地址解析协议)
ARP用于将一个已知的IP地址映射到MAC地址。
1)检查ARP高速缓存表;
2)若地址不包含在表中,就向网上发广播来寻找。具有该IP地址的目的站用其MAC地址作为响应。
RARP协议(逆地址解析协议)
RARP用于将一个已知的MAC地址映射到IP地址。
RARP要依赖于RARP服务器,该服务器中有一张MAC地址与IP地址的映射表。
需要查找自己IP地址的站点向网上发送包含有其MAC地址的RARP广播,RARP服务器收到后将该MAC地址翻译成IP地址予以响应。
ICMP协议
为了提高 IP 数据报交付成功的机会,在网际层使用了因特网控制报文协议 ICMP (Internet Control Message Protocol)。传递网络控制信息,提供差错报告,ICMP 不是高层协议,而是 IP 层的协议。
ICMP协议与IP协议的关系
将ICMP报文加IP头部,封装成IP分组
ICMP实现的主要功能
向信源机发送终点(信宿)不可到达报告, 回送请求/应答报文对
ICMP报文分类:ICMP差错报告报文和ICMP查询报文
在主机之间提供可靠的进程通信。(使用网络层提供的主机数据通信服务) 运输层向它上面的应用层提供通信服务。
TCP和UDP的比较:
UDP
1.无连接。发送数据之前不需要建立连接
2.尽最大努力交付。UDP 的主机不需要维持复杂的连接状态表。
3.没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。
4.支持一对一、一对多、多对一和多对多的交互通信。
5.UDP 用户数据报只有8个字节的首部开销。
6.面向报文的
TCP
概述:
1.TCP提供面向连接的字节流传输。
2.面向连接的传输协议要求对每一个报文都要进行确认,未经确认的报文被当作是错误报文。
3.流相当于一个管道,发送端从管道的一端放入什么,接收端就可以照原样取出什么(按序)。
4.TCP连接是全双工和点到点的。
-全双工意味着可以同时进行双向传输。
-点到点的意思是每个连接只有两个端点。
-TCP不支持组播或全广播。
TCP报文格式:
TCP的可靠传输:TCP 发送的报文段是交给 IP 层传送的,但 IP 层只能提供尽最大努力服务。因此,TCP 必须采用适当的措施才能使得两个运输层之间的通信变得可靠。
理想的传输条件有以下两个特点:(1)传输信道不出现差错。(2)不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。
在这样的理想条件下,不需要采取任何措施就能够实现可靠传输。然而实际的网络都不具备以上两个理想条件。所以需要一些可靠传输协议来帮忙,当出现差错时让发送方重传出现差错的数据,同时在接收方来不及处理收到的数据时,及时报告发送方适当降低发送数据的速度。
一、停止等待协议
全双工通信的双方既是发送方,也是接收方。下面为了讨论方便,我们仅考虑 A 发送数据而 B 接收数据并发送确认。因此 A 叫做发送方,而 B 叫做接收方。
超时重传
1.在发送完一个分组后,必须暂时保留已发送的分组的副本。只有在收到相应分组的确认后才能清除暂时保留的分组副本。
2.分组和确认分组都必须进行编号。这样才能明确是哪一个发送出去的分组收到了确认,而哪一个分组没有收到确认。
3.超时计时器的重传时间应当比分组传输的平均往返时间更长一些。
确认丢失和确认迟到
二、连续ARQ协议(自动重传请求)
工作原理:
发送方发完一帧后,不必停下来等待对方的应答,可以连续发送若干帧;如果在发送过程中收到接收方的肯定应答,可以继续发送;若收到对其中某一帧的否认帧,则从该帧开始的后续帧全部重发。
要注意:
(1)接收端只按序接收数据帧。
(2)结点A在每发送完每一个数据帧时都要设置超时计时器。
(3)ACKn表示对n-1号及其以前各帧的确认,期望下次收到n号帧。
累积确认:
接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。
累积确认的优点:容易实现,即使确认丢失也不必重传。
累积确认的缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。
Go-back-N(回退 N):
如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。
可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。
滑动窗口:
1.发送窗口:用来对发送端进行流量控制,而发送窗口的大小WT就代表在还没有收到对方确认信息的情况下发送端最多可以发送数据帧数。
2.接收窗口:其大小WR代表可以连续接收的最多数据帧数,窗内是当前欲接收的数据帧的发送序号(只有序号在窗口内的帧才可以接收,否则丢弃)。
接收窗口驱动发送窗口的转动。
一、TCP的数据编号与确认
TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。
在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。
TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。
二、TCP的流量控制
一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。
流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。
原理:TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。
三、TCP的拥塞控制
原理:在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion)。
出现网络拥塞的条件:对资源需求的总和 > 可用资源
若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。
拥塞控制与流量控制的关系:
拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制。
流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
慢开始、拥塞避免、快重传、快恢复
TCP拥塞控制算法的操作可以划分成三个阶段:
第1阶段是慢开始生长阶段:
先少后多,用试探法得知网络的性能,对每一确认逐渐增加CWnd
CWnd < SSthresh
用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。
①连接建立时拥塞窗口(cwnd)初始值为该连接允许的一个最大段长MSS,设置初始门限值(ssthresh);
②一个最大段长的TCP段,若正确确认,拥塞窗口变为最大段长的两倍;
③发出( 拥塞窗口/最大段长)最大长度的TCP段,若都得到确认,则拥塞窗口加倍;
④重复上一步,直至发生丢包超时事件,或拥塞窗口大于门限值。
第2个阶段:拥塞避免阶段
①慢开始不会长久地增加拥塞窗口,当拥塞窗口达到拥塞门限值时,慢开始停止。 cwnd=ssthresh
②若拥塞窗口大于门限值: cwnd > ssthresh 从此时开始,改用拥塞避免算法。拥塞窗口线形增长,而不是指数增长。对于每一往返时间RTT增加拥塞窗口一个段。
第3个阶段:控制阶段
拥塞窗口不可以无限制地增加。当TCP检测到网络拥塞的时候(超时或重复的确认出现)拥塞窗口停止增加。该算法现在进入第三阶段。
① 首先把拥塞门限值ssthresh设置成当前发送窗口尺寸(拥塞窗口和通告窗口中的最小值,但至少两个段)的一半swnd/2;
② 接着把拥塞窗口设置成一个最大段长cwnd=1MSS;
③然后再重新开始慢开始算法。
快重传
快重传算法规定,发送端只要一连收到三个重复的 ACK 即可断定有分组丢失了,就应立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时。
快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。
快恢复
(1) 当发送端收到连续三个重复的 ACK 时,就重新设置慢开始门限 ssthresh。
(2) 与慢开始不同之处是拥塞窗口 cwnd 不是设置为 1,而是设置为 ssthresh + 3 MSS。
(3) 若收到的重复的 ACK 为 n 个(n > 3),则将 cwnd 设置为 ssthresh + n MSS。
(4) 若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。
(5) 若收到了确认新的报文段的 ACK,就将 cwnd 缩小到 ssthresh。
TCP 的重传机制
TCP 每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。
三次握手:
名词:
(1)序号(seq):占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段的数据序号应该从401开始;
(2)确认号ack:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。例如,B收到了A发送过来的报文,其序列号字段是501,而数据长度是200字节,这表明B正确的收到了A发送的序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701;
(3)确认ACK:仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1
(4)SYN:同步序列号,建立连接时使用同步SYN,在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1.
过程:
(1)准备:TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态;TCP客户进程也是先创建传输控制块TCB.
(2)第一次握手:客户机向服务器发出连接请求报文,报文首部中同步位SYN=1,设置初始序列号 seq=x ,TCP客户端进程进入 SYN-SENT(同步已发送状态)状态。
(3)第二次握手:服务器收到请求后,若同意连接,则发出确认报文。确认报文中 ACK=1,SYN=1,确认号ack=x+1,同时初始化一个序列号 seq=y,服务器进程进入了SYN-RCVD(同步收到)状态。
(4)第三次握手:客户机进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。
四次挥手:
名词:
FIN:用于释放连接,为 1 表示发送方已经没有数据发送了,即关闭本方数据流。
过程:
(1)第一次挥手:客户端进程发出连接释放报文,并且停止发送数据。FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),客户端进入FIN-WAIT-1(终止等待1)状态。
(2)第二次挥手:服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文.
(3)第三次挥手:服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
(4)第四次挥手:客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命 2分钟)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。
为什么是四次挥手?
因为TCP是全双工通信的
(1)第一次挥手 因此当主动方发送断开连接的请求(即FIN报文)给被动方时,仅仅代表主动方不会再发送数据报文了,但主动方仍可以接收数据报文。
(2)第二次挥手 被动方此时有可能还有相应的数据报文需要发送,因此需要先发送ACK报文,告知主动方“我知道你想断开连接的请求了”。这样主动方便不会因为没有收到应答而继续发送断开连接的请求(即FIN报文)。
(3)第三次挥手 被动方在处理完数据报文后,便发送给主动方FIN报文;这样可以保证数据通信正常可靠地完成。发送完FIN报文后,被动方进入LAST_ACK阶段(超时等待)。
(4)第四挥手 如果主动方及时发送ACK报文进行连接中断的确认,这时被动方就直接释放连接,进入可用状态。