【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
一、TCP与UDP概述
TC/IP模型的传输层负责传输应用数据。为满足多个应用的需求、实现多路复用,传输层使用逻辑端口号标识应用。为满足不同应用高效或高可靠需求,传输层提供TCP和UDP两种数据传输服务。
逻辑端口分TCP端口和UDP端口两种,分别用来标识TCP应用与UDP应用。逻辑端口的端口号从0~65535。0~1023称为知名端口,已分配给固定应用,用户应避免使用,其它端口为非知名端口,用户可以自由选择。
数据传输分单向传输和双向传输。单向传输直接传输数据,传输效率高,但无法协商,也得不到反馈,在分组交换网中,报文易乱序,易被丢弃,这种通信是不可靠的,称为无连接的通信,如数据帧和数据包的传输。双向传输可以协商数据传输,可以根据反馈重发或调整传输,从而确定报文有序接收、不遗漏,这种通信是可靠的,称为面向连接的通信,传输效率受影响 。
二、UDP
UDP(User Datagram Protocol)是TCP/IP协议簇传输层的用户数据报协议,提供无连接的不可靠的数据传输服务。UDP为特定应用封解应用数据,直接传输数据报,简单高效,而数据可靠性要求应用层自行完成。
三、TCP
TCP(Transmission Control Protocol)是TCP/IP协议簇传输层的传输控制协议,提供面向连接的可靠的数据传输服务。TCP通过TCP控制段为特定应用建立、保持、结束会话,通过TCP数据段传输应用数据。
三次握手建立TCP会话:
1、A发送SYN段请求建立A到B的TCP会话,然后等待;
2、B收到SYN段后发送SYN+ACK段回应并请求建立B到A的TCP会话,然后等待;
3、A收到SYN+ACK段后发送ACK段回应;
过四次握手结束会话:
1、A发送FIN段请求终止A到B的TCP会话;
2、B收到FIN段后发送ACK段回应,同时发送FIN段请求终止B到A的TCP会话;
3、A收到ACK段等待FIN段,收到FIN段后发送ACK段回应,然后终止A到B的TCP会话;
4、B收ACK段后终止B到A的TCP会话。
确认与重传:
1、A发送TCP数据段,然后等待中,超时重传;
2、B收到TCP数据段后发送ACK段回应,ACK段中请求下一个TCP数据段。
3、A收到ACK段,根据ACK段的请求发送下一个TCP数据段。
来源:oschina
链接:https://my.oschina.net/u/4272947/blog/3146211