一次经典的tcp三次握手
TCP报头
在三次握手中使用的字段:
32位序列号 seq:表示的是本次报文发送的数据的第一个字节的序号。
32位确认号:ack 表示期望下一次应该接受到的报文的第一个字节的序号,若ack = N则表示,到序号N-1为止的所有的数据都已经正确的收到了。
ACK位(图中红色部分,用ACK大写表示ACK位,ack小写表示确认号):确认,当ACK = 1是确认号ack才有效,建立连接后,所有传送的报文段都必须把ACK置为1.
SYN位(图中红色部分):同部位,在建立连接的时候使用,若SYN=1,ACK=0,则表示是一个连接请求报文,若接收方同意接收连接,则使用SYN = 1,ACK = 1。所以,从上面可以看出来SYN = 1表示这个报文是一个连接请求或连接接收报文。
三次握手的过程
A发送连接请求:A发送连接请求时,将SYN置为1,ACK置为0,seq取一个数x,ack取0(因为ACK为0,所以这个时候ack取值没有意义),这个过程将消耗一个序号。
B确认连接:若B同意A请求连接,则B发送的报文中,SYN = 1,ACK = 1,seq取一个数字y,ack取x +1,这个过程将消耗一个序号。seq取y和前面的过程没有关系,ack取x+1是因为,A发送的数据seq为x,并且在发送的过程当中消耗了一个序号,所以,下一次应该收到的数据的地址为x+1,加的1就是消耗的一个序号。
A确认:A需要再次确认,SYN = 0,ACK = 1, seq = x + 1, ack = y + 1。 seq表示发送的数据的序号为x + 1,同时希望B下一次发送的数据的序号为y + 1。
一个例子
发送的第一个数据包
在第一个包的时候SYN = 1,ACK = 1,seq的值为一个随机的值,ack为0。
发送的第二个数据包
在第二个数据包的时候ACK = 1,SYN = 1,seq的值为一个随机数,ack的值为上一个数据包的seq的值+1。
发送的第三个数据包
在第三个数据包中:SYN = 0,ACK = 1,seq的值为第一个数据包的seq的值+1,ack的值为第二个数据包的seq值+1。
总结一下
在三次握手的时候,有四个字段是非常重要的。SYN和ACK均占一位,表示同步和确认。seq和ack均为32位,分别为发送的数据的序号,和希望对方发送的数据的序号。
在三次握手的过程中,第一次和第二次的过程中SYN的值均为1,并且每个过程都消耗掉一个序号,消耗一个序号的意思是:使得数据的序号加1,好像是发送了一位数据,但是并没有真正的传递数据。
参考:谢希仁 《计算机网络》第六版
一次经典的tcp三次握手的更多相关文章
- [Linux]经典面试题 - 网络基础 - TCP三次握手
[Linux]经典面试题 - 网络基础 - TCP三次握手 目录 [Linux]经典面试题 - 网络基础 - TCP三次握手 一.TCP报文格式 1.1 TCP报头 1.2 报文图例 二.TCP三次握 ...
- TCP三次握手及其背后的缺陷
概述 总结一下TCP中3次握手过程,以及其原生的缺陷 引起的SYN Flood的介绍 [1]TCP三次握手 [2]SYN Flood 1.TCP连接建立--三次握手 几个概念: [1]seq:序号,占 ...
- 脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手
.引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道“三次”和“四次”,但是如果问深入一点,他们往往都无法作出准确回答. 本篇文章尝试使用动画图片的方 ...
- [转帖]脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手
脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手 http://www.52im.net/thread-1729-1-1.html 1.引言 网络编程中TCP协议的三次握手和 ...
- 从TCP三次握手说起–浅析TCP协议中的疑难杂症(2)
版权声明:本文由黄日成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/108 来源:腾云阁 https://www.qclo ...
- 对TCP三次握手四次分手还不清楚,超简单解析
关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 先上个TCP三次握手 ...
- 浅析TCP三次握手及四次挥手
1. 三次握手 1. TCP为什么相较于UDP是可靠连接? 可靠连接是指,待通信的两个实体,能够满足通信数据包的有序性.完整性以及可靠性.对于UDP来说, 它的连接过程不需要握手,忽略丢失的数据包,并 ...
- 简单说说TCP三次握手、四次挥手机制
1.什么是TCP TCP全称Transmission Control Protocol(传输控制协议),是一种面向连接的.可靠的.基于字节流的传输层通信协议.是为了在不可靠的互联网络上提供可靠的端到端 ...
- 阿里二面,面试官居然把 TCP 三次握手问的这么细致
TCP 的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度.看似是简单的面试问题,如果你的回答不符合面试官期待的水准,有可能就直接凉凉了. 本文 ...
随机推荐
- jsoup抓取网页报错UnsupportedMimeTypeException
今天在用Jsoup爬虫的时候两次遇到下面错误 Exception in thread "main" org.jsoup.UnsupportedMimeTypeException: ...
- PHP 快速建立一个对象
前言 PHP 中的数组(尤其关联数组)是经常使用的 —— 因为方便.在一些框架中也经常见到返回数组格式的配置参数.然而有些时候可能需要对象而非数组类型的配置参数,在查阅网络资料后找到了方法,作以记录. ...
- 微信小程序开发定制
上海软件定制专家:http://www.dzonly.com/?from=timeline
- ActiveMQ-Prefetch机制和constantPendingMessageLimitStrategy
首先简要介绍一下prefetch机制.ActiveMQ通过prefetch机制来提高性能,这意味这 客户端的内存里可能会缓存一定数量的消息.缓存消息的数量由prefetch limit来控 制.当某个 ...
- Zabbix3.0源码安装
环境:nginx1.6.3 php-5.6.22 mysql-5.5.49 请参考前面的博文自行搭建 安装依赖并创建用户 [root@test88 ~]# yum install -y libxml2 ...
- mysql 配置数据库主从同步
参考:https://www.cnblogs.com/kevingrace/p/6256603.html http://www.51testing.com/html/00/130600-243651. ...
- word2vec参数
架构:skip-gram(慢.对罕见字有利)vs CBOW(快) · 训练算法:分层softmax(对罕见字有利)vs 负采样(对常见词和低纬向量有利) 负例采样准确率提高,速度会慢, ...
- 【转】doxygen+graphviz生成工程中的类继承树及函数调用图
转自----hequn8128 在阅读代码量比较多的项目时,类的继承树和函数调用图能够直观地向我们显示类之间或者函数之间的各种关系,方便我们了解程序的整体框架,很多时候可以起到事半功倍的作用.这里尝试 ...
- Android项目包命名规则是怎样的?
com.example.app.activity | Activity 类com.example.app.widget | 自定义的小UIcom.example.app.db | 数据库相关操作com ...
- powerdeginer 默认name 为 common
在使用PowerDesigner对数据库进行概念模型和物理模型设计时,一般在NAME或Comment中写中文,在Code中写英文.Name用来显 示,Code在代码中使用,但Comment中的文字会保 ...