1.请描述TCP协议中标志位ACK、SYN、FIN、RST的含义,并叙述下TCP三次握手建立连接的过程
-
ACK(Acknowledge):表示确认号字段有效,通知接收方收到前一个数据包的序号,确认序号无误。一般每次收到数据都会回复一个包含ACK标志的确认包,这样对方才知道自己发送的数据已经被对方所接收。
-
SYN(Synchronize):表示同步序号,用来建立连接。当客户端向服务器端发起请求时,首先会发送一个标志位包含SYN的数据包,表明客户端请求连接,并给此数据包设定一个随机的序列号。
-
FIN(Finish):表示发送方已经没有数据要传输了,表示主动关闭连接。由于TCP是全双工模式,因此关闭连接需要发送方和接收方都各自发送一个FIN标志位来表示关闭方向的一致性。
-
RST(Reset):表示复位请求,表示请求对方复位连接。当收到RST标志位时,表示TCP连接出现严重问题,需要彻底终止连接,之后不再和对方发送和接收信息。
三次握手建立连接的过程如下:
-
客户端向服务器端发送SYN标志的数据包,其中设置了一个随机序列号Seq=x,表示请求建立连接,之后进入SYN_SENT状态。
-
服务器端收到数据包后会发送一个同时包含SYN和ACK标志的数据包,其中确认序列号为Ack=x+1,表示确认收到客户端发送的SYN数据包,并请求建立连接。同时服务器也会生成一个随机序列号Seq=y,表示要求客户端连接自己。
-
客户端收到服务器端的确认以后,也会发送一个包含ACK标志的数据包给服务器端,其中确认序列号Ack=y+1,表示确认已经收到服务器端的请求建立连接的应答,至此,三次握手完成,客户端和服务器开始正常进行数据传输。
2.什么是多路复用?什么是多路分解?请分别说明二者概念。同时叙述运输层的多路复用与多路分解有哪几种?
多路复用:在数据的发送端,传输层收集各个套接字中需要发送的数据,将它们封装上首部信息后(之后用于分解),交给网络层;
多路分解:在数据的接收端,传输层接收到网络层的报文后,将它交付到正确的套接字上;
常见的运输层多路复用与多路分解有以下几种:
-
TCP多路复用与多路分解:TCP通过端口号标识不同的应用程序,每个应用程序通过不同的端口号与运输层连接。客户端和服务器端利用端口号进行通信,一个TCP连接可以同时传输多个应用程序的数据,实现了多路复用与多路分解。
2. UDP多路复用与多路分解:UDP也通过端口号标识不同的应用程序,每个应用程序通过不同的端口号与运输层连接。但是,UDP不维护连接状态,因此应用程序需要自己实现 多路复用与多路分解。即应用层将数据进行打包,添加标识符来区分不同的应用数据,然后交由UDP进行传输。
3.TCP和UDP的区别?
TCP是面向连接的,UDP是无连接的
TCP是可靠的,UDP是不可靠的
TCP是面向字节流的,UDP是面向数据报文的
TCP只支持点对点通信,UDP支持一对一,一对多,多对多
TCP报文首部20个字节,UDP首部8个字节
TCP有拥塞控制机制,UDP没有
TCP协议下双方发送接受缓冲区都有,UDP并无实际意义上的发送缓冲区,但是存在接受缓冲区
标签:UDP,复习,多路复用,TCP,发送,期末,数据包,连接 From: https://www.cnblogs.com/05-ReFrain-19/p/17507728.html