TCP协议详解,你从未见过额全新版本

前言:

TCP/IP协议簇的传输层协议主要有两个,TCP(Transimission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)

一:TCP协议介绍

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

TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。

二:TCP报文格式

2.1TCP报文段

TCP将若干个字节构成一个分组,成为报文段。

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

2.2TCP报文段格式

源端口号:16位字段,为发送方进程对应的端口号。

目标端口号:16位字段,对应的是接收端的进程,接收端收到数据后,根据这个端口号来确定吧这个数据送给哪个应用程序的进程。

序号:当TCP从进程接收数据字节时,就把他们存储在发送缓存中,并对每一个字节进行编号。

确认号:确认号是对发送端的确认信息。用它来告诉发送端这个序号之前的数据段都已经收到。如确认号是X,就表示前X-1个数据段都已经收到。

首部长度:一般是20字节,最大可以扩展为60字节。用它可以确定首部数据结构的字节长度。

保留:作为今后扩展功能使用,现在还没有使用到。

控制位:这六位作用很重要,TCP的连接,传输和断开都受这六个控制位的指挥。各位的含义如下。

URG:紧急指针有效位。只有0和1,1表示指针开启。数据传输时,先放在缓存(内存)中,临时保存起来,紧急指针位是指可以在内存中优先提取数据。

PSH:标志位=1时要求接收方尽快将数据段送达应用层。即PSH=1时,不经过缓存,直接将数据段送达应用层。优先级高于URG。

<u>ACK</u>:确认位。只有当ACK=1时,确认序列号才有效。当ACK=0时,确认序列号字段无效。

<u>SYN</u>:连接位。同步序号位,TCP需要建立连接时将这个值设置为1.

<u>FIN</u>:断开连接标识。发送端完成发送任务位,当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设置为1.

RST:重新建立连接TCP连接时使用。,当RST=1时,通知重新建立TCP连接。

窗口大小:用于说明本地可接收数据段的数目,窗口大小是可变的。当网络通畅是窗口值变大可以加快传输速度,当网络不稳定时减小这个值可以保证网络数据的可靠传输。TCP协议中的流量控制机制就是依靠变化窗口值的大小实现的。

校验和:用来做差错控制。在发送TCP数据段时,由发送端计算校验和,到达目的地时再进行一次校验和计算。若两次校验和一致,则说明数据基本是正确的,否则将认为数据已被破坏,接收端将丢弃数据。

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

选项:在TCP首部可以有多达40字节的可选信息。

三:TCP连接--三次握手

3.1第一次握手

建立连接过程:PC1发送建立连接请求,SYN标志位设为1.

3.2第二次握手

这一次握手实际上分为两部分来完成。

第一部分:PC2收到PC1的请求,向PC1回复一个确认信息,此过程的典型标志就是TCP的ACK控制位为1。且确认序列号是PC1的初始序列号加1.

第二部分:PC2收到请求后需要回复。即PC2也向PC1发送建立连接的请求,此过程的典型标志和第一次握手一样,即TCP的SYN控制位为1.

为了提高效率,一般将这里两个部分合并在一个数据包里实现。

3.3第三次握手

PC1收到了PC2的回复(包含请求和确认),此时需要向PC2回复一个确认信息,此过程的典型标志就是TCP的ACK控制位为1.且确认序列号是PC2的初始序列号加1.

此时就完成了三次握手

3.4总结

上图中

Seq表示请求序列号。

Ack表示确认序列号

SYN控制位只有在请求建立连接时才被设为1.

四:TCP四次挥手

参加数据交换的双方中的任何一方(客户和服务器)都可以关闭连接。TCP断开连接分四步,也称为四次挥手。

4.1第一次挥手

PC1发送 FIN 和 ACK 控制位为1的TCP报文段给PC2.

FIN:断开连接标识,提出断开连接的一方将这个值设为1.

ACK:ACK=1,表示确认序列号字段有效。

4.2第二次挥手

PC2收到PC1的信息,开始回复。

PC2 回复 ACK=1 的 TCP 报文段给 PC1。

4.3第三次挥手

PC2现在开始主动发送消息给PC1,发送 FIN=1,ACK=1 的报文段给PC1.

即PC2也发消息给PC1,FIN=1,我(也)要和你断开连接。ACK=1,确认序列号字段有效。

4.4第四次挥手

PC1收到 PC2 的消息,回复ACK=1 的TCP报文段。

ACK=1,确认PC2 发给 PC1 的序列号字段有效。

4.5半关闭

在TCP断开连接(四次挥手)的过程中,TCP一方(通常是客户端)可以终止发送数据,但仍然可以接收数据,成为半关闭。

具体描述一下:

1.客户端发哦是那个FIN报文段,半关闭了这个连接,服务器发送ACK报文段接收半关闭。

2.服务器继续发送数据,而客户端只发送ACK确认,不再发送任何数据。

3.当服务器吧所有数据都发送完毕时,就发送FIN报文段,客户再发送ACK报文段,这样就关闭了TCP连接。

五:DUP协议介绍

5.1UDP协议

UDP缺点:是一个无连接,不保证可靠性的传输层协议,也就是说发送端不关心发送的数据是否达到目标主机,数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。

UDP优点:UDP的首部结构简单,在数据传输时能实现最小的开销。

5.2UDP报文的首部格式

UDP在实际工作中的应用范围很广,例如,聊天工具QQ在发送短消息时就使用了UDP的方式。

5.3UDP协议端口和功能

TFTP:简单文件传输协议,速度快。

RPC::远程过程调用。同步传输数据的时候会用到。

NTP:比如做网络架构时,100台机器实现数据同步传输,就需要用到网络时间协议。

六:常见协议及其端口

FTP:文件服务器,方便文件的上传和下载。

TELNET:采用明文发送,建议在局域网中使用,不建议在广域网中使用。

SMTP:发送邮件的协议

POP3:收邮件的协议

HTTP:打开网站用到的协议

原文地址:https://blog.51cto.com/14557670/2444892

时间: 2024-08-30 05:28:59

TCP协议详解,你从未见过额全新版本的相关文章

TCP协议详解即实例分析

 TCP协议详解 3.1 TCP服务的特点 TCP协议相对于UDP协议的特点是面向连接.字节流和可靠传输. 使用TCP协议通信的双方必须先建立链接,然后才能开始数据的读写.双方都必须为该链接分配必要的内核资源,以还礼链接状态和连接上数据的传输.TCP链接是全双工的,即双方的数据读写可以通过一个连接进行.完成数据交换之后,通信双方都必须断开连接以释放系统资源. TCP协议的这种连接是一对一的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务.而无连接协议UDP则非常适合于广

TCP协议详解(下)

 TCP协议详解 TCP状态转移 TCP连接的任意一端在任一时刻都处于某种状态,当前状态可以通过netstat命令查看,这里我们主要讨论TCP连接葱白建立到关闭的整个过程中通信两端状态的变化.如图是TCP状态转移过程. 图中,粗虚线表示典型的服务器连接的状态转移:粗实线显示典型的客户端连接的状态转移. TCP状态转移总图 服务器转移过程,这里我们说的连接状态指定是该连接的服务器状态. 服务器通过listen系统调用进入LISTEN状态,被动等待客户端连接,因此执行的是所谓的被动打开.服务器一

TCP协议详解(理论篇)

TCP协议详解(理论篇) 1.    与UDP不同的是,TCP提供了一种面向连接的.可靠的字节流服务.面向连接比较好理解,就是连接双方在通信前需要预先建立一条连接,这犹如实际生活中的打电话.助于可靠性,TCP协议中涉及了诸多规则来保障通信链路的可靠性,总结起来,主要有以下几点: (1)应用数据分割成TCP认为最适合发送的数据块.这部分是通过"MSS"(最大数据包长度)选项来控制的,通常这种机制也被称为一种协商机制,MSS规定了TCP传往另一端的最大数据块的长度.值得注意的是,MSS只能

44 TCP 协议详解

44 TCP 协议详解 TCP 协议 传输控制协议, Transmission Control Protocol,其功能包括:传输:控制 传输包括:建立连接.关闭连接.保证可靠 建立连接:三次握手 三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立.在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示: (1)第一次握手:Client将标志位SYN置为1,随机产生一个值se

第一章、TCP协议详解

TCP/IP协议包含众多协议,本章,我们介绍几个相关协议:ICMP协议,ARP协议,DNS协议,学习他们对于理解网络通信很有帮助. 一.TCP/IP协议族体系结构以及主要协议: TCP/IP协议从下到上分四层:数据链路层,网络层,传输层,应用层. 应用层 ping OSPF DNS 用户空间 传输层 TCP   UDP 网络层 ICMP     IP    内核空间 数据链路层 ARP data-link RARP 1.(1)数据链路层:实现了网卡接口的网络驱动程序,以处理数据在物理媒介(以太网

【TCP协议详解】

为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用.只有把它们联合起来,电脑才会发挥出它最大的潜力.于是人们就想方设法的用电线把电脑连接到了一起. 但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息.因而他们需要定义一些共通的东西来进行交流,TCP/IP就是

TCP协议详解

TCP协议   传输控制协议 Transmission Control Protocal 功能点两点: 1.一个是传输功能:主要工作是建立连接和关闭连接 2.另一个是控制功能:主要工作是保证传输的可靠 建立连接的过程:三次握手 1.给对方拨号 2.接听,喂,你好,请问你哪位 3.我是强子 关闭连接过程:四次挥手 保证可靠 详细介绍三次握手过程: 第一次握手:客户端发送SYN包至服务器,并进入SYN_SENT状态,等待服务器确认 第二次握手:服务器收到客户端的SYN包,发送一个ACK,同时发送自己

TCP协议详解---上

TCP头格式 注意以下几点: TCP的包是没有IP地址的,那是IP层上的事.但是有源端口和目标端口. 一个TCP连接需要四个元组来表示是同一个连接(src_ip, src_port, dst_ip, dst_port)准确说是五元组,还有一个是协议.但因为这里只是说TCP协议,所以,这里我只说四元组. 注意上图中的四个非常重要的东西: Sequence Number是包的序号,用来解决网络包乱序(reordering)问题. Acknowledgement Number就是ACK——用于确认收到

【计算机网络】TCP协议详解

常见问题 Q1. TCP报文头结构多大? Q2. TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因? Q3. TCP为何采用四次挥手来释放连接? TCP协议 首先,我们需要知道TCP在网络OSI的七层模型中的第四层——传输层(Transport),IP在第三层——网络层(Network),ARP在第二层——(Data Link),在第二层上的数据,我们叫帧(Frame),在第三层上的数据叫包(Packet),第四层的数据叫报文段(Segment). 1. TCP报文头结构 首先