白话TCP三次握手

众所周知,TCP是可靠传输,那么什么叫可靠呢?简单的讲就是二者通信,只有当彼此都知道自己以及对方收发消息都正常时候,然后再进行数据传输。 而三次握手的目的就是为了确认双方收发消息都没问题。

首先需要了解的是:

1.TCP规定SYN=1时不能携带数据,也就是SYN置1就表示这是一个连接请求或连接接受报文

2.连接建立后所有发送的报文的ACK必须为1

3.当FIN=1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接

三次握手:

step1:客户端发送链接请求报文SYN=1 ACK=0到服务端,进入SYN_SEND状态,等待服务端确认

step2:服务端收到请求,向客户端发送SYN=1 ACK=1,服务端进入SYN_RECV状态

step3:客户端收到消息,向服务端发送确认包,客户端和服务器进入ESTABLISHED状态

那么问题来了,为啥需要三次握手确认?两次为啥不行?

其实这就好比这样的一个场景:

周末,小明想约小红出去浪,于是小明发微信消息给小红

显然,小明发出第一条消息问小红在不在,这时候小明无法确定自己信息是否真的发出去了?小红会不会收不到信息?亦或小红收到信息了但是她回的消息自己没收到?.........这时候其实还是两眼一抹黑

小明收到小红回复的消息,这时候小明知道,自己收发信息都是没问题的,而且小红的收发也是没问题。但是对小红来说,她只知道自己的收信没问题,但是自己发的信息有没有发出去并不知道.....

小红这时候收到小明的回复,证明自己上一条回复小明的消息发送成功,此时也说明自己跟小明的收发消息都正常。。。。可以进一步深聊

至此,TCP三次握手完成,是不是很简单?

时间: 2024-08-25 14:38:23

白话TCP三次握手的相关文章

TCP三次握手四次挥手

一.计算机网络体系结构 1.OSI参考模型             2.TCP/IP体系结构        二.TCP三次握手 TCP(Transmission Control Protocol): 传输控制协议. TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手来建立一个连接. TCP有6种标志位: 1.SYN(建立连接)      表示同步序号,用来建立连接.SYN标志位和ACK标志位搭配使用,当连接请求的时候,SYN=1,ACK=0:连接被响应的时候,SYN=1,ACK

TCP三次握手及tcpdump抓包

1. TCP报文段的首部格式 说明: ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1 SYN(SYNchronization) : 在连接建立时用来同步序号.当SYN=1而ACK=0时,表明这是一个连接请求报文.对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此,  SYN置1就表示这是一个连接请求或连接接受报文 FIN (finis)即完,终结的意思, 用来释放一个连接.当 FIN = 1 时,表明此报文段的发送方的数据已经发

TCP三次握手(建立连接)/四次挥手(关闭连接)

相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助. 而且对于有网络协议工程师之类笔试,几乎是必考的内容.因此在这里详细解释一下这两个过程. TCP数据包格式 顺序号( 32 位):用来标识从 TCP 源端向 TCP 目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号.如果将字节流看作在两个应用程序间的单向流动,则TCP用顺序号对每个字节进行计数.序号是32bit的无

TCP三次握手介绍

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议.在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层.不同主机的应用层之间经常需要可靠的.像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠

tcp三次握手与四次挥手

开放系统互连参考模型为实现开放系统互连所建立的通信功能分层模型,简称OSI参考模型.其目的是为异种计算机互连提供一个共同的基础和标准框架,并为保持相关标准的一致性和兼容性提供共同的参考.这里所说的开放系统,实质上指的是遵循OSI参考模型和相关协议能够实现互连的具有各种应用目的的计算机系统. 一.    OSI模型七层结构 物理层   位 bit 2.数据链路层  帧 frame 3.网络层 数据包packet/package 4.传输层 网段segmet 5.会话层  message 6.表示层

抓包工具-Wireshark(详细介绍与TCP三次握手数据分析)

功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封包,可以截取各种网络封包,显示网络封包的详细信息,包括http,TCP,UDP,等网络协议包.注:wireshark只能查看封包,而不能修改封包的内容,或者发送封包. 一.开始界面 开始界面,如图1所示: 图1(wireshark开始界面) 点击Caputre->Interfaces,出现图2所示对话框,选择需要捕获网络包的网卡,点击start按钮开始抓包. 注:如果

TCP三次握手和四次挥手

TCP三次握手和四次挥手 在了解TCP三次握手和四次挥手之前我们先来了解一下TCP的标志位,这样有助于我们理解TCP三次握手和四次挥手的过程 TCP标志位: URG:表示TCP包的紧急指针域有效,用来保证TCP连接不被中断 ACK:表示确认序号有效 PSH:表示Push操作; 所谓Push操作就是指在数据包到达接收端以后, 立即传送给应用程序,不在缓冲区排队 RST:表示连接复位请求; 用来复位那些产生错误的连接 SYN:表示同步序号, 用来建立连接;SYN和ACK搭配使用,请求连接时,SYN=

Wireshark 基本介绍和学习 TCP 三次握手

这篇文章介绍另一个好用的抓包工具 Wireshark, 用来获取网络数据封包,包括 HTTP.TCP.UDP 等网络协议包. 记得大学的时候就学习过TCP的三次握手协议,那时候只是知道,虽然在书上看过很多TCP和UDP的资料,但是从来没有真正见过这些数据包, 老是感觉在云上飘一样,学得不踏实.有了wireshark就能截获这些网络数据包,可以清晰的看到数据包中的每一个字段.更能加深我们对网络协议的理解.对我而言, wireshark 是学习网络协议最好的工具. 阅读目录 wireshark介绍

用tcpdump分析tcp三次握手,四次挥手

1.tcpdump 简介 tcpdump是一个对网络上的数据包进行截获的包分析工具,一般linux系统以命令的形式使用 2.tcp三次握手 建立一个tcp连接会发生下面三个过程: 1.服务器必须准备好接受外来的连接,一般是调用socket,bind,listen三个函数完成 2.客户端通过connect主动连接.客户端tcp发送一个SYN,告诉服务器将在连接中发送数据的序列号 3.服务器必须确认(ACK)客户端的SYN,同时发送自己的SYN 4.客户端必须确认服务器的SYN 总共会进行三次数据交