您的位置:首页 > 理论基础 > 计算机网络

一次网络请求的过程(第二部分)

2020-06-03 05:16 176 查看

通过前面的学习我们已经知道一个网络数据包如何从一个主机传到另一个主机。当时我们在具体通信时,不仅仅是两个主机之间能够进行通信,而是进程与进程的通信(跨设备的)。

1.传输层:管理端到端的数据通信。

在一台计算机中通过端口来标识不同的进程,端口由16为比特表示,一共有0~65535个端口。

下面介绍传输层的两个重要协议:UDP协议TCP协议

2.UDP协议:用户数据报协议

UDP是传输层的协议,功能即为在IP的数据报服务之上增加了最基本的服务:复用分用(复用、分用由接口实现)以及差错检测

UDP提供不可靠服务,具有TCP所没有的优势

1.无连接协议,时间上没有时延,也不需要主机上的空间来维护连接状态;
2.不保证可靠交付数据,但是提供尽最大努力交付;
3.UDP是面向报文传输的,对应用层交下来的报文,添加首部后直接向下封装到 IP 协议,既不合并,也不拆分,保留这些报文的边界。对IP层交上来UDP用户数据报,在去除首部后就原封不动地交付给上层应用进程,报文不可分割,是UDP数据报处理的最小单位。
4.没有拥塞控制
5.首部开销小,TCP首部20字节,UDP首部8字节;
应用场景:视频通话、电视会议、直播等需要低时延的应用,并且可以容忍偶尔丢失部分数据,但是不影响整体使用;

3.TCP协议:传输控制协议

3.1TCP协议的特点与协议头
TCP协议具有以下特点:
1.面向连接的协议;
2.点对点通信;
3.TCP提供可靠传递服务;
4.全双工协议;
5.面向字节流的协议(TCP传输的每个字节都有一个序号);
TCP协议头:
序号:当前发送字节流中第一个字节的序号;
确认号:期望收到数据的首字节序号;
TCP标记:占6位,每一位有不同的含义;
窗口:允许对方发送数据量的大小

3.2 TCP建立连接的三次握手
下面看一下TCP建立连接的过程,也就是常说的三次握手
第一次:发送方发送的数据为:SYN=1,seq=x ;表示当前发送的是一个连接请求,同时携带了一个自己的序列号x。

第二次:接收方接收到了发送方的连接请求,回复:SYN=1,ACK=1,seq=y,ack=x+1;表示接收方向发送方回复一个连接请求,同时ACK置为1表明当前ack字段值可用,期望下一收到的第一个字节的序号为x+1,并且也携带了自己的序列号y;

第三次:发送方回复:ACK=1,seq=x+1,ack=y+1;ACK=1表示当前发送方的确认号字段可用,并且ack=y+1;同时也携带了自己的序列号x+1;

后面就可以进行数据传输了。

4.TCP实现可靠传输的基本原理

4.1 停止等待协议
发送方先发送消息1,如果接收方接收到了消息1,就会回复确认1;
发送方接收到了接收方发送的确认1,就会着手发送消息2;然后接收方接收到了消息2,又会回复一个确认2…

这就是停止等待协议
下面看如果这个过程发生了错误是如何处理的:当发送消息1之后,但是消息1在发送过程中由于网络原因没有被接收方接收到。此时发送方在等待一段时间后没有收到消息1的确认信息,就会重新发送一个消息1。这就是超时重传,如上图。

同时还有下面这种情况的超时重传。
还有这种情况,由于确认消息很久才到,系统认为它已经失效,这个确认消息也没用了。
可以总结出三种情况:
1.发生过程丢失;
2.确认过程丢失;
3.确认消息很久才到;

都可以通过停止等待协议完成可靠传输,这里使用的是 超时定时器 ,来记录等待的时间。

但是我们可以很清楚发现这种方式的信道利用率太低

4.2 连续ARQ协议 (Automatic Repeat reQuest:自动重传请求)
既然单次发送一个报文,效率很低。那么我们能不能一次发送多个报文呢?
如上图,有一个滑动窗口,我们一次发送多个报文。当接收到确认时,那么就往后滑动窗口,此时可以发送新的报文。
连续ARQ中采用的是累计确认的形式,如果说我们一次发送了报文1——6,那么如果说收到了第五个报文的确认,那么发送方就认为报文1——5都收到了,此时向前移动5个窗口。

5.TCP的四次挥手

在接收方接收到发送方的第一个请求之后,接收方会回去一个确认。然后有一个关闭等待的时间段,用于接收方发送余下未发送完的数据。

待上述关闭等待时间段之后,接收方会再次发送一个回复,并且携带FIN=1的TCP标记,表明是一个结束通信的信息。
当接收方接收到这个带有FIN=1 的TCP标记之后,也会回复一个确认。随后发送方进入等待计时器计时阶段(等待2MSL),用于确保发生方的第四个报文到达接收方。

最后接收方收到第四个报文(即发送方的确认报文),就会进入关闭状态。

等待2MSL原因是,当发送方发送的最后一个报文没有被接收方接收到,也就是说接收方没有收到发送方发送的最后一个确认,那么接收方会重复发送第三次报文。这个过程的时长是2MSL,如果超过了2MSL,发送方没有再收到报文,那么表明接收方已经收到了第四个报文(确认报文),此时就可以进入关闭状态。

6.应用层的协议

最后简单介绍几个应用层的协议

6.1 DNS域名解析
我们一般访问网络的时候使用的是域名,比如www.baidu.com。但是计算机在进行通信的时候使用的是ip地址,所有我们需要将域名转为ip地址。DNS域名服务器就是帮助我们将域名转为ip地址的服务器。DNS域名服务器有很多,也分为几级,如下图所示:
6.2 DHCP(动态主机配置协议)
6.3 HTTP和HTTPS协议
HTTP协议的中文叫做超文本传输协议,它是可靠的数据传输协议(TCP实现)
形式如下:http://<主机>:<端口>/<路径>,默认端口为80。

HTTPS协议叫做安全的HTTP协议
形式如下:https://<主机>:<端口>/<路径>,默认端口为443。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: