计算机网络(四),TCP三次握手
目录
1.三次握手详情
2.为什么需要三次握手才能建立连接
3.首次握手的隐患---SYN超时的问题
4.建立连接之后,Client出现故障
四、TCP三次握手
1.三次握手详情

(1)一开始,客户端和服务器端都处于关闭状态(CLOSED),然后开启服务,服务端这个时候处于监听状态(LISTEN)。
(2)客户端发送一个连接请求报文,里面SYN等于1,seq可以使任意一个整数,标明这个报文段的序号。这个报文段不能传输数据。此时客户端进入同步状态(SYN-SENT)。
(3)服务端同意连接则发送一个报文段,里面SYN=1,ACK=1,seq=y,ack=x+1。大写字母是标志位ACK=1表示确认号(ack)有效,这里ack确认上一个服务器发送过来的seq为x的已经接受,确认下一个接收的编号为x+1,同时发送的报文段的序号为y。此时的报文段不能发送数据。服务端进入同步状态(SYN-RCVD)。
(4)客户端接收服务端报文段之后,回复一个报文段,里面ACK=1,seq=x+1,ack=y+1。ack确认服务器端的y编号的数据已经接受,请求ack=y+1的字段,此时客户端的报文段编号为x+1。此时可以发送数据,也可以不发送。客户端进入已建立连接状态(ESTAB-LISHED)。
(5)服务端接收之后进入已连接状态(ESTAB-LISHED)
2.为什么需要三次握手才能建立连接
主要是初始化Sequence Number的初始值
3.首次握手的隐患---SYN超时的问题
问题分析:Server收到Client的SYN,回复SYN-ACK的时候未收到ACK确认
服务端解决方法:Server不断地重试直至超时,Linux系统中超时时间是63秒,即重试五次之后关闭连接1,2,4,8,16,32,第五次重试之后等待32秒后关闭。
SYN Flood攻击:即不断的使服务端进入同步状态,使服务器的端口不可用,浪费掉
解决方法:设置一个SYN队列,当SYN队列满了之后,服务器则会通过tcp_syncookies参数回发一个SYN Cookie,如果客户端连接正常则会回发SYN Cookie,直到建立连接
4.建立连接之后,Client出现故障
连接具有保活机制,向对方发送保活探测报文,如果未收到响应则继续发送,常识次数达到保活探测数任未收到响应即终止连接。
计算机网络(四),TCP三次握手的更多相关文章
- 面试问题之计算机网络:TCP三次握手四次挥手
转载于:https://www.cnblogs.com/Andya/p/7272462.html TCP三次握手: 起初A和B都处于CLOSED关闭状态 B创建TCB,处于LISTEN收听状态,等待A ...
- 从零开始学安全(四十四)●TCP三次握手四次挥手
wireshark:Beyond Compare是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与 ...
- 计算机网络之tcp三次握手
客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西:由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客 ...
- 关于 TCP 三次握手和四次挥手,满分回答在此
尽人事,听天命.博主东南大学研究生在读,热爱健身和篮球,正在为两年后的秋招准备中,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 C ...
- TCP三次握手,数据传输,四次挥手
TCP包结构 一个TCP包结构如下: 一个TCP包主要由TCP包头和数据部分组成,包头固定部分为20字节,选项和数据部分根据实际情况设置为4N(N可以为0)字节. 1.16bit源端口和目的端口号,它 ...
- 用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制
关于TCP三次握手和四次挥手大家都在<计算机网络>课程里学过,还记得当时高超老师耐心地讲解.大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过<java程序设计>和< ...
- 【linux】关于TCP三次握手和四次挥手
1.TCP是什么 关于OSI的七层模型 TCP在第四层——Transport层,第四层的数据叫Segment->报文 IP在第三层——Network层,在第三层上的数据叫Packet->数 ...
- TCP三次握手四次断开
今天被问到三次握手了,当时只是脑子里有印象,却忘了一些SYN细节,手动微笑. 这么下去还怎么混...赶紧复习个... 三次握手是什么? TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双 ...
- 脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手
.引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道“三次”和“四次”,但是如果问深入一点,他们往往都无法作出准确回答. 本篇文章尝试使用动画图片的方 ...
随机推荐
- hive自定义udaf函数
自定义udaf函数的代码框架 //首先继承一个类AbstractGenericUDAFResolver,然后实现里面的getevaluate方法 public GenericUDAFEvaluator ...
- codeforces 842C Ilya And The Tree (01背包+dfs)
(点击此处查看原题) 题目分析 题意:在一个树中,有n个结点,记为 1~n ,其中根结点编号为1,每个结点都有一个值val[i],问从根结点到各个结点的路径中所有结点的值的gcd(最大公约数)最大是多 ...
- asp.net core在发布时排除配置文件
使用命令发布 dotnet restore dotnet publish -c Release -r win-x64 -o "D:\services" 这样发布总是是将配置文件覆盖 ...
- O013、动手实践Linux VLAN
参考https://www.cnblogs.com/CloudMan6/p/5326737.html 本节我们来看如何在实验环境中实施和部署如下的VLAN 网络
- css--内凹圆角
<div class="box"></div> :root { --r: 2em; } .box { overflow: hidden; position: ...
- This application has no explicit mapping for /error, so you are seeing this as a fallback.
检查url是否输入正确,要加上之前的mapping映射
- js动态添加行和列(table)
function AddTableRow() { var Table = document.getElementById("NewTable"); //取得自定义的表对象 NewR ...
- ubuntu 创建定时备份pg数据库定时任务
ubuntu创建定时备份数据库定时任务 一.命令文件 创建db_back.sh #!/bin/bash echo "start backup" /usr/lib/postgresq ...
- 为什么wamp 放两个网站 或者多个网站就很卡很慢,问题在这里
PHP的配置比较简单,只需要进行一些基本设置的修改就可以了,依次点击—PHP—php.ini,找到这三个地方:short_open_tag = Off(是否允许使用 PHP 代码开始标志的缩写形式(& ...
- mysql的auto-rehash简介
今天在看mysql的配置文件的时候,发现有"auto-rehash"不明白什么意思,在此记录一下,auto-rehash是自动补全的意思,就像我们在linux命令行里输入命令的时候 ...