TCP与UDP

▼魔方 西西 提交于 2019-12-23 15:15:56

【推荐】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数据段。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!