TCP协议(数据传输层)的连接过程【三次握手四次挥别】

前段时间学习OSI网络模型感觉自己懂了其实,还很浅显这两条想深入的学习一下就把自己的心的写在这里,供大家参考指正。
前言
TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。就这点与无连接协议如UDP不同,UDP向一端发送数据报时,无需任何握手。
一、TCP报文段的内容
TCP数据报文外边是包裹的网络层IP协议的报文如下图

IP首部就是目的和源的IP地址什么的这里就先不研究了重点是这个TCP首部数据格式如下。如果不计任选字段通常是20个字节。

序号:Seq序号,占32位用来标识TCP源端向目的端发送的字节流,发起方发送数据是对此进行标记。
确认序号:ack序号,只有ACK标志位为1时,确认序号段才有效,ack=Seq+1
标志位有6个:
?URG:紧急指针有效
?ACK:确认序号有效
?PSH:接收方应该尽快将这个报文交给应用层处理
?RST:重置链接
?SYN:发起一个新连接
?FIN:释放一个连接
注意事项:
1)不要将确认序号ack(小写)与确认标志位ACK搞混
2)确认方ack=发起方Seq+1两端配对
二、三次握手
所谓三次握手(Three-way Handshke)就是建立TCP连接,意思就是互相要传送3个包以确定连接的建立。(在socket变成中,这一过程由客户端执行connetc来触发在C语言中使用过于bind配合)

三次握手:
1)Client将标志SYN置为1,随机产生一个值Seq=x
2)Server收到数据包由标志位SYN=1知道client请求建立连接.server将标志位SYN和ACK都置为1之后ack=x+1,随机产生一个seq=y。并将数据发送给client确认请求
3)Client收到确认后检查ack是否为x+1。ACK是否为1.如果正确侧将ACK置为1然后ack=y+1。将数据发送给server。Server检查ack是否为y+1。ACK是否为1如果正确则连接建立成功。
三、四次挥手

由于TCP连接是全双工的,因此每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方的连接,收到FIN只是意味着这一方向上没有数据流动了,即不会在收到数据但是这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭而另一方则执行被动关闭。
1)client发送一个FIN,用来关闭client到server的数据传送,
2)Server收到一FIN后,发送一个ACK给client,确认序号为收到序号+1(与SYN一样,一个FIN占用一个序号),
3)Server发送一个FIN用来关闭server到client的数据传送
4)Client收到FIN后发送一个ACK给server确认序号为收到序号+1
完成了四次挥手告别

原文地址:http://blog.51cto.com/13638458/2113045

时间: 2024-10-11 12:06:47

TCP协议(数据传输层)的连接过程【三次握手四次挥别】的相关文章

【Linux网络基础】TCP/IP协议簇的详细介绍(三次握手四次断开,11种状态)

一.TCP/IP协议簇(DoD参考模型) 用于简化OSI层次,以及相关的标准. 传输控制协议(tcp/ip)簇是相关国防部DoD所创建的,主要用来确保数据的完整性以及在毁灭性战争中维持通信 是由一组不同功能的协议组合在一起构成的协议簇 利用一组协议完成OSI所实现的功能 1. TCP/IP 协议簇中的相关协议 TCP/IP协议簇--应用层: TCP/IP协议簇--主机到主机层: TCP与UDP对比: TCP相关报文结构: 源端口:即本地发起连接的端口 目标端口:即要访问的服务的端口 序列号:因为

TCP连接为什么三次握手四次挥手

前几天面试某电商被问住了,问的很细,我就说了说连接过程,必然凉凉.在csdn上找了一篇很详细的博客.https://blog.csdn.net/hyg0811/article/details/102366854 看之前先给解释一下ACK.SYN等缩写的含义. SYN: 同步序列编号(Synchronize Sequence Numbers).是TCP/IP建立连接时使用的握手信号.在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到

TCP协议的三次握手+四次断开

TCP协议的三次握手 1.TCP/IP协议概述 TCP/IP协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础.TCP/IP是网络中使用的基本的通信协议.虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录.文件传输和电子邮件等,而TCP协议和IP协议是保证数

重学TCP/IP协议和三次握手四次挥手

计算机网络体系结构 在计算机网络的基本概念中,分层次的体系结构是最基本的.计算机网络体系结构的抽象概念较多,在学习时要多思考.这些概念对后面的学习很有帮助. 网络协议是什么? 在计算机网络要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式.是否需要发送一个应答信息.这些规则被称为网络协议. 为什么要对网络协议分层? 简化问题难度和复杂度.由于各层之间独立,我们可以分割大问题为小问题. 灵活性好.当其中一层的技术变化时,只要层间接口关系保持不变,其他层不受影响. 易于实现

TCP建立连接通过三次握手,释放连接通过四次挥手

tcp建立连接通过三次握手.释放连接通过四次挥手 一.tcp建立连接通过三次握手 首先tcp的特性:tcp是面向连接的安全可靠的传输协议. 传输连接是用来传送tcp报文的.tcp传输连接的建立和释放是每一次面向连接的通信中必不可少的过程.因此,传输连接就有三个阶段:连接建立.数据传输.连接释放.传输连接的管理就是使传输连接的建立和释放都能正常的进行. 在tcp连接建立的过程中要解决以下三个问题: 1.要使每一方都能够确知对方的存在. 2.要允许双方协商一些参数(如最大窗口值.是否使用窗口扩大选项

tcp 建立连接的三次握手,以及关闭连接的4次挥手

TCP连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; (客户端问服务器:你爱我吗?) 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; (服务器回答:我爱你,你也爱我吗?) 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABL

TCP连接的三次握手,TCP/UDP区别联系,socket连接和http连接的区别

TCP连接的三次握手 1.第一次握手:客户端发送SYN + J包(syn = j)到服务器,并进入SYN_SEND状态,等待服务器确认: 2.第二次握手:服务器收到syn包,必须确认客户的SYN(A出口= j+1),同时自己也发送一个SYN+K包(syn =k),即SYN +ACK包,向服务器发送确认包ACK(ack = k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手, TCP/UDP区别联系 1.TCP的全称是传输控制协议,这种协议可以提供面向连接的,可靠地

详解TCP连接的“三次握手”与“四次挥手”(下)

上文链接: 详解TCP连接的"三次握手"与"四次挥手"(上) 四.TCP的四次挥手(Four-Way Wavehand) 0.前言 对于"三次握手"我们耳熟能详,因为其相对的简单.但是,我们却不常听见"四次挥手",就算听过也未必能详细地说明白它的具体过程.下面就为大家详尽,直观,完整地介绍"四次挥手"的过程. 1."四次挥手"的详解 所谓的四次挥手即TCP连接的释放(解除).连接的释放必

tcp连接的三次握手

为什么tcp连接需要三次握手才能建立连接 主要是为了初始化sequence number的初始值,通信的双方要互相通知双方的sequence number,这个要作为以后数据通信的序号,保证以后不会因为网络上的传输问题而乱序,tcp会使用这个序号来拼接数据.因此,在服务器回发它的sequence number以后,还需要发送确认报文发送给服务器告知服务器客户端已经收到了你的报文. 因此,如果只是两次握手的话,那么client发送一个请求,server接收到,在回复一个,这就表示server收到了