TCP协议介绍

1、TCP协议介绍

2、TCP报文格式

3、TCP三次握手

4、TCP四次挥手

5、常见协议及其端口

1、TCP协议介绍

TCP (Transmission Protocol)

传输控制协议

UDP(User Datagram Protocol)

用户数据报协议 

 TCP协议

TCP 是面向连接的、可靠的进程到进程通信的协议

TCP提供全双工服务,即数据可在同一时间双向传输

Tcp报文段:

TCP将若干个字节构成一个分组,叫报文段(Sefment)

TCP报文段封装在IP数据报中

TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来零食存储数据。

UDP协议是无连接、不保证可靠性的传输层协议。发送端不关心发送的数据是否到达目标主机、数据师傅欧出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。传输数据速度更快,效率更高

TCP报文段

(1)源端口号:接收端进程的端口号。接收端收到数据后,根据这个端口号来确定把数据送给那个应用程序的进程。

(2)序号:发送端为每个字节进行编号,便于接收端正确重组当TCP从进程接收到数据字节是,把他们分片成数据段在发送缓存中,并对每一个字节进行编号。当数据到达目的地后,接收端会按照这个序号把数据重新排列,保证数据的正确性。

(3)确认号:对发送端的确认信息

接收端响应消息时将会用它来告诉发送端这个序号之前的数据段都已经收到,如确认号是x,就是表示前x-1歌数据段都已经接收到

(4)首部长度:用它可以确定TCP首部数据结构的字节长度,一般情况下TCP首部是20个字节,但首部长度最大可以扩展为60字节。

(5)控制位

UGR:紧急位。紧急指针有效位

ACK:确认位。只有当ACK-1是,确认序列号字段才有效:当ACK-0时,确认号字段无效。

PSH:急迫位。标志位为1时要求接收方尽快将数据段送达应用层。

RST:重置位。当RST指为1时,通知重新建立TCP连接

SYN:同步(连接)为。同步序号位,TCP需要建立连接时讲这个值设为1

FIN:断开位。当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1

窗口大小:说明本地可接收数据段的数目。这个值得大小是可变的,当网络通畅时接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变换窗口的大小实现的。

比如下载速度从一开始的几KR逐渐提升到几MB的过程。

校验和:用来做差错控制。字段检验的范围包括手部和数据这俩部分。数据段在发送时和到达目得地时会进行检验和计算,若这两次的校验和一致,则说明数据基本是正确的,否则将认为该数据已被破坏,接收端将丢弃该数据。

紧急指针:和URG配合使用,当URG=1时有效。

选项:在TCP首部可以多达40字节的可选信息,例如,最大报文段长度MSS(Maximum Scqmcnt size)。MSS告诉对方TCP:“我的缓存所能接受的报文段的数据字段的最大长度是MSS个字节。”

TCP连接

TCP建立连接的过程称为三次握手(如下图)

 (1)当客户端向服务器发送请求连接的报文时:

Seq序列号—x(为随机)

SYN=1(表示发送连接请求)

(2)服务器端收到客户端发来的请求报文后,同意建立连接,则向客户端发送确认报文:

Seq序列号=y  (这时服务器也会产生一个序列号y,和客户端的序号不相关)

Ack确认号-x1(Seq序列号,表示确认收到了客户端的请求)

ACK=1 (表示这时条确认请求)

SYN=1(同事也发送一个建立连接的请求)

(3)看客户端进程受到服务端进程的确认后,还要向服务端给出确认,然后连接成功建立

Seq序列号=x+1(这时客户端的序号为1)

ACK确认号=y+1(表示确认收到了服务器的连接请求)

ACK=1(表示这是确认报文)

由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
(1)第一次挥手:PC1发送一个FIN,用来关闭PC1到PC2的数据传输。

(2)第二次挥手:PC2收到FIN后发送一个ACK个PC1确认序号为序号+1(与SYN相同,一个FIN占用一个序号)。

(3)第三次挥手:PC2发送一个FIN,用来关闭PC2到PC1的数据传送

(4)第四次挥手:PC1收到FIN后,PC1进入等待状态,接着发送一个ACK给PC2确认序号为收到序号+1,完成四次挥手。

为什么要4次挥手?
确保数据能够完整传输。

当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。

但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,

再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。
 

常用的TCP端口号及其功能

端口           协议             说明

69              TFTP           简单文件传输协议

111             RPC            远程过程调用

123             NTP            网络时间协议

161            SNMP          关于简单网络管理的协议

21(20)    FTP            FTP服务器所开放的控制端口

23              TELNET     用于远程控制管理目标计算机

25              SMTP         SMTP服务开放的端口,用于发送邮件

80              HTTP          超文本传输(HTTP 443 二次加密) 

110             POP3          用于邮件的接收

53              DNS             建立连接(UDP)用来解析

总结:

TCP报文格式

TCP建立连接三次握手

TCP断开连接四次挥手的过程

常见应用的 TCP协议及端口号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值