记录一下TCP和UDP常见问题

    科技2022-07-15  138

    TCP(Transmission Control Protocol,传输控制协议)

    UDP(User Data Protocol,用户数据报协议)

    1. TCP和UDP有什么区别?

    答:

    TCPUDP连接面向连接无连接占用系统资源较多较少结构复杂较简单模式流模式数据报模式正确性保证数据准确丢包顺序保证不保证

    2. TCP和UDP适用于那些场景?

    答:

    TCP:当对网络通讯质量有要求的时候,例如:整个数据要准确无误的传递 HTTP,HTTPS,FTP等传输文件的协议POP,SMTP等邮件传输协议 UDP:当对网络通讯质量要求不高的时候使用,要求网络通讯速度能尽量的快 语音视频

    附加:

    基于TCP的还有Telnet(网络远程访问协议);基于UDP的还有DNS(域名系统(服务)协议)、TFTP(简单文本传输协议)、SNMP(简单网络管理协议) 问题小伙不请自来(╹▽╹):为什么DNS使用UDP而不是TCP?

    3. TCP的三次握手(TCP建立连接的过程)?

    ① 客户端向服务器发送SYN(Seq = x)【同步数据包】。(SYN:能发送)

    ② 服务器返回Ack(x + 1)作为确认,同时发送SYN(Seq = y)【同步确认数据包】。(Ack:能接收,SYN:能发送)

    ③ 客户端发送Ack(y + 1)作为确认。(Ack:能接收)

    补充ヾ(◍°∇°◍)ノ゙:为什么是三次握手(两次和四次为什么不行)? 答: TCP连接是全双工的,数据在两个方向上能同时传递。所以要确保双方同时发送数据和结构数据。由上面①②③尾尾的小括号(╹▽╹)可以知道:

    第①次握手证明了发送方能发送数据;第②次握手证明的接收方能接收能发送数据;第③次握手证明了发送方能接收数据。

    此时三次握手已经确保双方同时发送数据和结构数据,四次握手就会显得浪费,而两次握手就无法确保。(⊙x⊙;)

    4. TCP的四次挥手(TCP断开连接的过程)?

    ① 主动关闭的一方(主机1),设置Seq,Ack,向主机2发送FIN。表示要单方面关闭数据的传输。

    ②主机2收到FIN后,发送一个Ack作为确认。表示同意主机1的关闭请求。 ③主机2数据传输完毕,向主机1发送一个FIN。表示关闭这个方向的数据传输。

    ④主机1向主机2发送Ack以确认回复。

    补充ヾ(◍°∇°◍)ノ゙:为什么是四次挥手? 答: TCP连接是全双工的,数据在两个方向上能同时传递。同时TCP支持半关闭,因此每个方向都要单独关闭,且收到关闭通知需要发送确认回复。

    参考资料

    《图解HTTP》 通俗大白话来理解TCP协议的三次握手和四次分手

    Processed: 0.013, SQL: 8