计算机网络
TCP/UDP
1.TCP和UDP的区别
TCP协议不会自动检测连接是否断开
TCP | UDP | |
---|---|---|
连接方式 | 面向连接的、可靠的数据流传输 | 非面向连接的、不可靠的数据流传输 |
通信方式 | 一对一、点对点 | 一对一、一对多、多对一、多对多 |
传输单位 | TCP报文段 | 用户数据报 |
对系统资源要求 | 较多(TCP的20个字节信息包),负载高,采用虚电路 | 较少(UDP信息包的标题很短,只有8个字节) |
安全性 | 可靠,安全 | 数据传输快,但是不可靠(尽最大努力交付) |
对应协议 | FTP、Telnet、SMTP、POP3、HTTP | DNS、SNMP、TFTP |
TCP提供超时重发、丢弃重复数据、检验数据、窗口技术、流量控制等功能,保证数据能传到另外一端。
UDP常用于QQ等即时通讯软件(适合于实时通信,当网络阻塞时,不影响发送端的发送效率。
- 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(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
2.TCP三次握手和四次挥手的全过程
- 三次握手
第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。 - 四次挥手
与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+