目次
一、TCP和UDP协议
1.1、UDP协议
1.2、TCP协议
1.3、总结下TCP与UDP的不同
二、TCP报文段格式
三、TCP三次握手
四、tcp四次挥手
3.1、谁可以停止连接?客户端还是服务端还是都可以?
3.2、为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
五、常见协议及其端口
一、TCP和UDP协议
1.1、UDP协议
UDP协议是无连接、不保证可靠性的传输层协议。发送端不关心发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。传输数据速率更快,服从更高。
1.2、TCP协议
TCP是面向连接的、在传送数据之前必须先建立连接,数据传送结束后要释放连接,可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用到临时存储数据。
由于先建立连接所以三次握手和四次挥手是围绕传输层TCP协议来讲的。
1.3、总结下TCP与UDP的不同
TCP 是面向连接的传输控制协议;而UDP 提供了无连接的数据报服务。
TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;
UDP 在传输数据前不建立连接,不对数据报举行检查与修改,无须等候对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作。
UDP 具有较好的实时性,工作服从较 TCP 协议高。UDP 段布局比 TCP 的段布局简单,因此网络开销也小。
TCP 协议可以保证接收端毫无不对地接收到发送端发出的字节省,为应用程序提供可靠的通佩服务。对可靠性要求高的通信体系每每使用 TCP 传输数据。
TCP 协议传输更加稳定可靠,UDP 协议传输服从更高。
这两个协议各有特点,在实际应用 中,根据实际应用的需要,选择不同的传输层协议
二、TCP报文段格式
TCP全称传输控制协议,必须对数据的传输举行控制。
字段名称长度(位)描述源端标语16表现数据从哪个进程来目的端标语16表现数据要到哪个进程去序号32seq,发送端为每个字节举行编号,便于接收端正确重组, 序号可以保证传输信息的有效性
确认序号32 每一个ACK对应这一个确认号,它指明下一个等待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。好比建立连接时,SYN报文的ACK标志位为0。如确认号是x,就是表现前X-1个数据段都已经收到。
4位首部长度(数据偏移)4表现TCP头部有多少个32位bit(有多少个4字节) 根据该部门可以将TCP报头和有效载荷分离
6位标志位(控制位)6URG, ACK, PSH, RST, SYN, FINURG1紧急位,紧急指针是否有效ACK1确认位,确认号是否有效PSH1急迫位,提示接收端应用程序立即将数据拿走RST1重置位,处理非常连接,要求重新建立连接SYN1同步位,请求建立连接FIN1断开位,通知对方本端要关闭连接16位窗口大小16接收方接收缓冲器剩余空间的大小, 流量控制
16位校验和16CRC校验,包罗TCP首部和数据部门16位的紧急指针16指向需要优先处理的报文,共同URG使用, 按序到达是TCP协议保证可靠性的一种机制
三、TCP三次握手
TCP是面向连接的,就是说每次发送数据之前都要和对方建立一条可靠的连接,这个建立连接的过程分为3个步骤,就叫做三次握手
① 当客户端向服务器发送请求连接的报文时
Seq序列号=x(x为随机)
SYN=1(表现发送连接请求)
② 服务器端收到客户端发来的请求报文后,同意建立连接,则向客户端发送确认报文:
Seq序列号=y(这时服务器也会产生一个序列号y,和客户端的序号不相关)
Ack确认号=x+1(Seq序列号x+1,表现确认收到了客户端的请求,表现肯定了i
ACK=1(表现这是条确认请求)
SYN=1(同时也发送一个建立连接的请求)
③ 客户端进程收到服务端进程的确认后,还要向服务端给出确认,然后连接乐成建立:
Seq序列号=x+1(这时客户端的序号为1)
Ack确认号=y+1(表现确认收到了服务器的连接请求)
ACK=1(表现这是确认报文)
四、tcp四次挥手
客户端计划断开连接,向服务器发送FIN报文
服务器收到连接释放报文后,就向客户端发送ACK应答报文
服务器也计划断开连接,向客户端发送连接释放(FIN)报文
客户端收到来自服务器的连接释放后,会向服务器发送一个ACK应答报文。
在四次挥手中有一个半关闭的概念
3.1、谁可以停止连接?客户端还是服务端还是都可以?
都可以停止连接
其实在最后一步客户端收到服务端的ACK之后实际上是不会立马关闭连接的,它进入了TIME_WAIT状态,为什么不立即关闭?
为了这种情况: B向A发送 FIN = 1 的释放连接请求,但这个报文丢失了, A没有接到不会发送确认信息, B 超时会重传,这时A在 WAIT_TIME 还能够接收到这个请求,这时再回复一个确认就行了。(A收到 FIN = 1 的请求后 WAIT_TIME会重新记时)
别的服务器B存在一个保活状态,即如果A突然故障死机了,那B那边的连接资源什么时候能释放呢? 就是保活时间到了后,B会发送探测信息, 以决定是否释放连接。
3.2、为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假想网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。
五、常见协议及其端口
常见的UDP协议和端标语
协议描述UDP 端标语NTP网络时间协议123DHCP动态主机设置协议67服务器 68客户端SNMP简单网络管理协议161代理162接收消息TFTP简单文件传输协议69RPC长途调用协议111 常见的TCP协议和端标语
协议描述TCP 端标语FTP文件传输协议20数据21长途SSH安全 Shell 服务22TelnetTelnet 服务23SMTP简单邮件传输协议25DNS域名服务53HTTP超文本传输协议80POP3邮局协议版本3110HTTPS安全超文本传输协议443MySQLMySQL 数据库3306
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |