TCP连接的三路握手

本文内容参考《Unix网络编程》,大概描述了TCP连接的三次握手过程,这是我看到的最清楚的描述,记录在这里,希望能帮助到大家对于TCP连接过程的理解。

传输控制协议(TCP)是TCP/IP协议簇里非常重要的一个协议。它提供客户与服务器之间的连接,并且提供可靠的数据传输功能。关于这个协议的具体规定,请参考相关文献。这里简单讲述一下三路握手。

建立一个TCP连接时会发生以下几个过程:

1.服务器必须做好接受外来的连接的准备。这个过程通过调用socket、bind和listen这三个函数来完成。

2.客户通过调用connect发起主动打开。这个过程中,客户发送一个SYN分节告诉服务器,客户将在连接中发送数据的初始序列号。

3.服务器确认客户的SYN,同时自己发送一个SYN,包含服务器将在该连接中发送的数据的初始序列号。

4.客户确认服务器的SYN。

非常形象的一个描述:

建立TCP连接就好比一个电话系统。socket函数等同于有电话可用。bind函数是在告诉别人你的电话号码,这样他们可以给你打电话。listen函数是打开电话铃声,这样当有外来呼叫时你可以听到。connect函数要求我们知道对方的号码并拨打它。accept函数就好比是被呼叫者接听电话了。当呼叫者听到对方接听之后,就相当于最后一次确认,然后就可以通话了。

时间: 2024-11-08 20:32:56

TCP连接的三路握手的相关文章

利用tcpdump监控tcp连接三次握手和关闭四次握手

学习网络编程最主要的是能理解底层编程细节,一开始看<UNIX网络编程卷1:套接字联网API>的时候搞不懂什么seq.ack到底是什么东西,最近了解了tcpdump的一些用法后感觉两者结合起来还是比较容易理握手过程的.以下就通过tcpdump工具来监控相关内容,并和书本上的流程进行对比介绍,希望对入门的童靴有些帮助吧 服务端代码如下: #include <sys/socket.h> //socket listen bind #include <arpa/inet.h> /

TCP连接三次握手,四次挥手告别

三次握手: 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服器,主机B由SYN=1知道,A要求建立联机: 第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包 第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1)

TCP连接 三次握手 四次挥手

前言: TCP协议是面向连接.安全可靠.基于字节流的传输层协议,在进行http协议访问时就用到了tcp连接.在建立TCP连接时需要经历三次握手,断开连接时需要经历四次挥手.在此进行记录. 内容: TCP三次握手 第一次握手:由客户端发起,客户端生成一个SYN,以及一个随机数标记数X,然后将随机标记数X和SYN发送为服务端,此时客户端进入SYN_SENT状态,等待服务端响应. 第二次握手:服务端接收到SYN后得知客户端请求连接,然后服务端将SYN和ACK都置为1,并将ack=X+1,再生成一个随机

HIT2019秋计算机网络-&gt;TCP连接3次握手

TCP(Transmission Control Protocol)传输控制协议 TCP是端-端的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:SYN(synchronous 建立联机) ACK(acknowledgement 确认) PSH(push 传送) FIN(finish 结束) RST(reset 重置) URG(urgent 紧急) seq(Sequence number 序列号) ack_seq(Acknowledge numb

客户端与服务端建立tcp连接三次握手之前做了什么----DNS

操作系统在握手之前进行了DNS查询   DNS 迭代查询 1.操作系统会首先在本地缓存中查询IP 2.没有的话会去系统配置的DNS服务中去查询 3.如果这时候还没得话,会直接去 DNS 根服务器查询,这一步查询会找出负责 com 这个一级域名的服务器 4.然后去该服务器查询 google 这个二级域名 5.接下来三级域名的查询其实是我们配置的,你可以给 www 这个域名配置一个 IP,然后还可以给别的三级域名配置一个 IP PS:DNS 是基于 UDP 做的查询, 原文地址:https://ww

【网络协议】TCP连接的建立和释放

转载请注明出处:http://blog.csdn.net/ns_code/article/details/29382883 TCP首部格式 先看TCP报文段的格式,例如以下; TCP报文段首部的前20个字节是固定的,后面有4N字节是依据须要而添加的选项.因此TCP报文段的最小长度为20个字节. 首部固定部分的各字段的意义例如以下: 1.源port和目的port:加上IP首部的源IP地址和目的IP地址,确定唯一的一个TCP连接.另外通过目的port来决定TCP将数据报交付于那个应用程序,从而实现T

[TCP/IP]TCP的三次握手和四次挥手

概述 总结一下TCP中3次握手过程,以及其原生的缺陷 引起的SYN Flood的介绍 1.TCP连接建立--三次握手 几个概念: seq:序号,占4个字节,范围[0,4284967296],由于TCP是面向字节流的,在 一个1个TCP连接中传送字节流中国的每一个字节都按照顺序编号,此外序号是循环使用的 ACK: 仅当ACK=1时确认字段才有效,当ACK=0时确认字段无效,并且TCP规定,在连接建立后所有的传送报文段都必须要把ACK置为1 SYN:同步序列号,用来发起一个连接.当SYN=1而ACK

Tcp协议三次握手跟四次挥手

一.Tcp协议(传输控制协议)1.面向连接的.可靠的进程到进程通信协议2.tcp提供双工服务,即数据统一时间可以双向传输3.tcp报文段A.tcp将若干个字节构成一个分组B.tcp报文段封装在ip数据报中4.tcp报文段的首部格式序号:发送端为每个字节进行编号,便于接受端正确重组确认号:用于确认发送端的信息SYN:同步序号位,tcp需要 连接是将该值设为1ACK:确认序号位,当该位为1时,用于确认发送方的数据FIN : 当tcp需要断开连接时,将该值设为1二.tcp连接三次握手过程,并用抓包工具

TCP为何采用三次握手来建立连接,若采用二次握手可以吗

1. TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的.基于IP的传输层协议,采用三次握手确认建立一个连接. TCP为了保证报文传输的可靠[1],就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收.然后接收端实体对已成功收到的字节发回一个相应的确认(ACK):如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传. 2. TCP协议三次握手过程分析 TCP是主机