TCP与UDP协议 以TCP协议连接过程 简称三次握手 、四次断开
一、TCP协议
TCP协议提供的服务
TCP (Transmission Control Protocol)、(传输控制协议):是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接受缓存,用来临时存储数据。
TCP协议的报文段
TCP将若干个字节构成一个分组,简称报文段(Segment)。TCP报文段封装在IP数据中。
TCP报文的首部长度20~60个字节、内容如下
- 源端口号:为发送方进程对应的端口好。
- 目标端口号:对应的是接受端的进程,接受端接受到数据段后,根据这个端口号来确定把数据送给那个应用的进程。
- 序号当TCP从进程接受数据字节时,就把他们存储在发送缓存中,并对每一个字节进行编号。当数据到达目的后,接收端会按照这个序号把数据重新排列,保证数据的正确性。
- 确认号:确认号是对发送端的确认信息,用它来告诉发送端这个***之前的数据段都已经收到
- 首部长度:用它可以确定首部数据结构的字节长度。
- 保留:这部分保留位作为今后扩展功能用。
- URG:紧急指针有效位。
- ACK:只有当ACK=1时,确认***字段才有效;当ACK=0时,确认***字段无效
- PSH:标志位位1时要求接收方尽快将数据段送达应用层。
- RST:当RST值为1时通知从新建立TCP连接。
- SYN:同步***,TCP需要建立连接时将这个值设为1。
- FIN:发送端完成发送任务,当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1。
- 窗口值:说明本地可接收数据端的数目,这个值的大小是可变的
- 校验和:要来做差错控制。若两次的校验和一致,这说明数据基本是正确的,否者将认为数据以损坏,接受端将丢弃数据。
- 紧急指针:和URG配合使用,当URG=1时有效。
- 选项:在TCP首部可以有多达40字节的可选信息。
TCP协议的连接过程(三次握手、四次断开)
TCP是面向连接的协议,它在原点和终点之间建立了一条虚拟连接。在数据通信之前,发送端与接收端要先建立连接,等待数据发送结束后,双方在断开连接。TCP连接的每一方都是由一个IP地址和一个端口号组成的。
简单的表述就是
三次握手:PC1发送SYN请求给接收方,PC2收到请求回复一个ACK并且发送一个SYN请求,PC1接收到SYN请求回应一个ACK
四次断开:PC1发送FIN请求给接收方,PC2收到请求回复一个ACK请求,PC2发送FIN请求给发送方,PC1收到请求后回复一个ACK请求给接收方。
三次握手
第一次握手
第二次握手
第三次握手
四次断开
第一次挥手
第二次挥手
第三次挥手
第四次挥手
断开连接过程中,有一个半关闭的状态,PC1终止发送数据但是任然可以接受PC2的的数据。就是第一次挥手后这个状态开启。
PC2回应了PC1 一个ACK报文表示同意PC1开启半关闭状态。当PC2的数据传输完成后,不在发送数据。PC2发送FIN报文PC1回应ACK这样TCP连接就断开了
二、UDP协议
UDP协议提供的服务
UDP是一个无连接、不保证可靠性的传输层协议,也就是说发送端不关心发送的数据是否到达目标主机、数据是否出错。
UDP协议的报文段
- 源端口号:用来标识数据发送端的进程
- 目的端口号:用来标识数据接受端的进程
- UDP长度:用来指出UDP的总长度,为首部加上数据。
- 校验和:用来完成对UDP数据的差错校验,这是UDP提供的唯一可靠机制。
三、TCP与UDP的区别
TCP:可靠的、面向连接的传输协议。主要有三次握手四次断开,滑动窗口、数据分段、数据重组、数据重传机制保证数据的可靠性。
UDP:不可靠、面向无连接的传输协议,它没有什么机制保证数据的可靠性。当数据量非常大时可以通过此协议来保证数据的高效低延时。
四、TCP与UDP常用的端口以及端口号
TCP常用的一些端口:
UDP常用的一些端口: