TCP协议基础

TCP协议(传输控制协议),UDP都是基于IP协议之上的。 与UDP不同,TCP提供了一个面向连接的,可靠的,基于字节流的传输服务。

面向连接:这意味着使用TCP协议的两台设备(服务器端与客户端)在交互数据前,必须先建立连接。

可靠的:保证数据不会丢失或出错。(有特定的机制检测是否丢失或出错,若丢失或出错就会重新发送)。

基于字节流的:TCP连接使用字节流来交互数据(一字节等于八位)。如果一端的应用先发送10字节,在发送20字节,再发送50字节。另一端的应用可能会读取到4次的20字节。

IP协议提供非可靠的,无连接的数据传输服务。TCP则多做了一些事,有更多的特性(可靠的),为了实现“可靠的”,TCP做了以下这些事情:

1.合理的将数据分成若干个段(segment),每一段都包含一个校验和,从而能检测出端到端的传输错误,每一段使用单个IP数据报来传输。

2.每发送一个段,都必须要在规定时间内接收到应答,若超时就会重新发送此段。

3.每接受一个段,都会发送一个应答。

4.通过检查checksum来保证所传输的数据是没有被修改过的,若没通过检查就不会接收并不做应答。

5.TCP segment 是由 IP datagrams 运输的,因为IP datagrams 不保证按顺序传输,所以TCP会将他们重新排序。

6.IP datagrams 还可能会传送重复的数据, TCP也必须将重复的数据删掉。

7.TCP提供流量控制,防止发送过快而接受太慢所导致的异常。

TCP头部数据报

16-bit source port number 16位源端口号

16-bit destination prot number 16位目标端口号

32-bit sequence number 32位顺序号

32-bit acknowledgment number 32位应答号

4-bit header length 4位头部长度

reserved(6 bit) 保留位

URG 紧急标志位

ACK 应答标志位(表明 应答号 之前的数据接收成功)

PSH 不进行缓存直接推送到应用的标志位

RST 标志重连接的标志位

SYN 同步顺序号以初始化连接的标志位

FIN 发送数据完毕的标志位(表明不会再发送数据过来)

16-bit window size 窗口大小(用于控流)

16-bit TCP checksum 检验(检验传输的数据是否正确)

16-bit urgent pointer 当URG标志被设置时有效,传送紧急数据

原文地址:https://github.com/alwxkxk/soft-and-hard

猜你喜欢

转载自blog.csdn.net/niuyuce/article/details/84936985