1.运输层的作用?
完成端到端的通信,端到端的通信是进程之间的通信。
运输层向高层用户屏蔽了下面网络核心的细节,它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。
2.TCP和UDP的区别?
TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
TCP对应的协议和UDP对应的协议
UDP:
使用尽 最大努力交付,
UDP是面向报文的,对应用层交下来的报文,既不合并,也不拆分
UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求。
UDP 仅仅实现端口的复用 分用 +检验 的功能
TCP:
TCP全称是传输控制协议(Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的传输层通信协议,可以提供可靠的数据传输服务。TCP具备如下特点:
面向连接:通信双方必须先建立连接才能进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接的状态和连接上的传输。完成数据交换后,双方必须断开此连接,以释放系统资源。
可靠传输:
1. 发送应答机制:TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功。
2. 超时重传:发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。
3. 错误校验:TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
4. 流量控制和阻塞管理:流量控制用来避免主机发送得过快而使接收方来不及完全收下。
TCP对应的协议:
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议:
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trivial File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
3.socket(套接字)
套接字 socket = (IP地址 : 端口号)
4.ARQ协议
ARQ协议
自动重传请求(Automatic Repeat-reQuest,ARQ),传统的一般分成为三种,即停等式(stop-and-wait)ARQ,回退n帧(go-back-n)ARQ,以及选择性重传(selective repeat)ARQ。后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为连续ARQ协议。
停止等待ARQ协议
停止等待ARQ是以停止等待协议(stop-and-wait)为思想的,停止等待协议是最简单但也是最基础的数据链路层协议。
众所周知信道是不可靠的,而停止等待协议是保证传输可靠性的重要途径。该协议的内容也很简单,就是一次只发送一个分组的消息,等对方确认之后再继续发后面的,如果没有接收到确认会触发超时重传,这样可以保证对方可以收到完整的消息。
停止等待ARQ协议也可以看做是一比特滑动窗口协议,发送窗口与接收窗口都等 1 。
这里我们可以很清晰的发现上面数据传输方式的缺点:通信信道的利用率很低,传输时延大。
连续ARQ协议
为了克服停止等待ARQ的缺点,又提出了连续ARQ协议。
连续ARQ(Automatic Repeat reQuest)协议也是结合滑动窗口协议的,其在发送方维持着一个一定大小的发送窗口,位于发送窗口内的所有分组都可连续发送出去,而中途不需要等待对方的确认。这样信道的利用率就提高了。而发送方每收到一个确认就把发送窗口向前滑动一个分组的位置。
回退n帧(go-back-n)ARQ
回退n帧ARQ可以看做是发送窗口 > 1 ,接收窗口 = 1的滑动窗口协议,这就是说接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都已正确收到了。
但网络状况不好的时候会出现,如发送窗口为 10 时,一次发送 10 个数据包,前面两个正确返回了,但第三个丢失了,这时发送方就得重新从第三个包开始,把后面的再传一遍,接收方也必须抛弃前面的 4 - 10 这几个帧,所以网络不佳的情况下可能会比停止等待ARQ还慢。
选择重传(selective repeat)ARQ
回退n帧ARQ在出现错误帧时,发送方要把错误帧之后的所以帧重发一遍,在网络情况不佳的时候只会进一步恶化网络。
选择重传ARQ可以看做是发送窗口 > 1 ,接收窗口 > 1的滑动窗口协议,其会在接收端缓存所有收到的帧,当某个帧出现错误则只需要重传这个错误的帧即可,只有当收到的帧序号都正确了才会往高层应用传递。
选择重传ARQ的缺点是相较于回退n帧ARQ,其在服务端需要更多的缓存。
5.TCP报文头部的序号和确认号都占据4个字节,序号有什么用?确认号呢?
序号用于传输数据的编号,在TCP报文中一个字节一个序号。确认号表示期待收到的数据的首字节序号。
6.TCP报文头部的数据偏移字段有什么用?他和TCP报文的结构有什么关系?
数据偏移字段表示传输数据偏移TCP首部的距离,如果TCP报文中包含可选数据,则数据偏移字段起作用。
7.TCP实现的流量控制
流量控制 (flow control) 就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞
利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制
TCP的流量控制和TCP头部的窗口字段是密切相关的,流量控制根据TCP报文中窗口的大小来进行数据的传输,当窗口较大时,增加数据发送速度,当窗口较小时,降低数据发送速度。
8.Nagle算法
9.拥塞控制与流量控制的区别
拥塞控制:防止过多的数据注入到网络中,使网络中的路由器或链路不致过载;是一个全局性的过程,涉及到与降低网络传输性能有关的所有因素
流量控制:抑制发送端发送数据的速率,以使接收端来得及接收;是点对点通信量的控制,是端到端的问题;
10 拥塞的判断,拥塞控制方法
1。重传定时器超时:网络已经发生拥塞 2。收到三个重复的ACk:预示网络可能会出现拥塞(实际可能还未发生拥塞)
TCP连接的发送方可以感知网络环境的状态并做出反应。发送端常用的拥塞控制方法有:慢启动算法、拥塞避免算法、快重传算法、快恢复方法。
慢启动算法的思路:主机开发发送数据报时,如果立即将大量的数据注入到网络中,可能会出现网络的拥塞。慢启动算法就是在主机刚开始发送数据报的时候先探测一下网络的状况,如果网络状况良好,发送方每发送一次文段都能正确的接受确认报文段。那么就从小到大的增加拥塞窗口的大小,即增加发送窗口的大小。
拥塞避免:为了防止cwnd增加过快而导致网络拥塞,所以需要设置一个慢开始门限ssthresh状态变量,它的用法:
1. 当cwnd < ssthresh,使用慢启动算法,
2. 当cwnd > ssthresh,使用拥塞控制算法,停用慢启动算法。
3. 当cwnd = ssthresh,这两个算法都可以。
拥塞避免的思路:是让cwnd缓慢的增加而不是加倍的增长,每经历过一次往返时间就使cwnd增加1,而不是加倍,这样使cwnd缓慢的增长,比慢启动要慢的多。
无论是慢启动算法还是拥塞避免算法,只要判断网络出现拥塞,就要把慢启动开始门限(ssthresh)设置为设置为发送窗口的一半(>=2),cwnd(拥塞窗口)设置为1,然后在使用慢启动算法,这样做的目的能迅速的减少主机向网络中传输数据,使发生拥塞的路由器能够把队列中堆积的分组处理完毕。拥塞窗口是按照线性的规律增长,比慢启动算法拥塞窗口增长块的多。
快重传算法:l发送方只要一连收到三个重复确认,就知道接收方确实没有收到报文段,因而应当立即进行重传(即“快重传”),这样就不会出现超时,发送方也不就会误认为出现了网络拥塞。
快重传算法要求首先接收方收到一个失序的报文段后就立刻发出重复确认,而不要等待自己发送数据时才进行捎带确认。
快恢复