三次握手协议

用 Wireshark 图解:TCP 三次握手

那年仲夏 提交于 2020-03-06 14:08:35
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “snow warn throughout the winter” 一、什么是 Wireshark ? 简单地说,Wireshark 是抓包工具。官网说,“Wireshark 是一个网络包分析工具。 网络数据包分析仪将尝试捕获网络数据包并试图尽可能详尽显示该数据包。” 推荐一本书《Wireshark 网络分析就这么简单》,Wireshark 工具下载地址 https://www.wireshark.org/download.html。 Wireshark 不单单能抓包,主要的 Features 是对数据包进行各种的分析。下载打开界面非常简单直观: 最上面是 Packet List 窗口,它列出了所有网络包。 在 Packet List 中选定的网络包会详细地显示在中间的 Packet Details 窗口中。 最底下是 Packet Bytes Details 窗口(16 进制数据),我们一般不会用到它。 二、我们抓什么包呢?如题 TCP TCP 一脸懵逼。记得上次在 《 图解Http协议 》得知,HTTP 是一个客户端和服务器端请求和响应的标准TCP。其实建立在 TCP 之上的。那我们就抓 HTTP,这很简单。 三、实操 Wireshark 选择 Capture –

如何理解TCP的三次握手协议?

放肆的年华 提交于 2020-02-05 11:09:25
• TCP是一个面向链接的协议,任何一个面向连接的协议,我们都可以将其 类比为我们最熟悉的打电话模型 。 如何类比呢?我们可以从建立和销毁两个阶段分别来看这件事情。 建立连接阶段 首先,我们来看看TCP中经典的3次握手协议: # 主机A、B建立连接阶段3次握手过程 1. 主机A向主机B发送请求报文(其中SYN位为1)。  2. 主机B接受到报文后,向主机A回复ACK报文,并为此处连接分配资源。 3. 主机A接受到ACK报文后,也向主机A回复ACK报文,并分配资源。一次TCP连接就这样建立了。 如果类比成打电话,那么就是 # A给B打电话,B拿起听筒后 1. A首先对着听筒“喂”了一声。 2. B听到“喂”之后,向A回复“请讲”。//此时A可以确认B能够听到他说话 3. A听到B的“请讲”之后,回复“你好”。 //此时B也确认了A能够听到他说话 至此,TCP是3次握手,而不是2次或是4次握手的原因也就一目了然了:A和B发出的第一个报文都是为了获得对方的回答,以便确 大专栏 如何理解TCP的三次握手协议? 认对方能接受到自己的消息。 销毁连接阶段 销毁连接阶段,要经历4次握手: 1. Client端发起FIN中断连接请求。 2. Server端接受到该请求,Server端发送ACK给Client端,Client端进入FIN_WAIT状态。此时

大厂面试中三次握手延伸出来n连发你受得了?

别说谁变了你拦得住时间么 提交于 2020-01-20 03:13:34
秋招面试也不记得多少家公司会有这个面试题。所以将其总结一下并分享给大家。 文章目录 一、这是一次有故事的对话 二、三次握手的客户端服务端状态 1 先画个图看看有哪些状态 2 tcp协议内容解析 3 通过工具wireshark来验证我们所述 三、说下Linux网络编程常用API 1 Linux网络编程常用API 2 粘包现象 四、再说说为啥不是两次握手或者四次握手? 五、最后聊一聊分析网络程序的工具 1 网络程序调试工具的思维导图 2 详解各个小工具 六 结尾 嘀嘀嘀。。。。一看广东,难道是腾讯的面试,哦原来是电话面试。那就开始吧! 一、这是一次有故事的对话 先说说三次握手的各个状态 二、三次握手的客户端服务端状态 1 先画个图看看有哪些状态 嗯?这些ack seq是干啥的呢,不急不急,我们先把tcp协议格式内容给整明白了。 2 tcp协议内容解析 小贱先把tcp的头部搬过来 然后我们来解析一下各个字段是什么意思 字段名 字段描述 16位端口号 告知主机该报文是来自哪里以及传给哪个上层协议或应用程序(目的端口)的。 32位序列号 一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号 32位确认号 用作对另一方发送来的TCP报文段的响应 4位头部长度 标识该TCP头部有多少个32bit字(4字节)。因为4位最大能表示15,所以TCP头部最长是60字节。

大厂面试中三次握手延伸出来n连发你受得了?

柔情痞子 提交于 2020-01-19 22:58:41
目录 一、这是一次有故事的对话 二、三次握手的客户端服务端状态 1 先画个图看看有哪些状态 2 tcp协议内容解析 3 通过工具wireshark来验证我们所述 三、说下Linux网络编程常用API 1 Linux网络编程常用API 2 粘包现象 四、再说说为啥不是两次握手或者四次握手? 五、最后聊一聊分析网络程序的工具 1 网络程序调试工具的思维导图 2 详解各个小工具 六 结尾 秋招面试也不记得多少家公司会有这个面试题。所以将其总结一下并分享给大家。 @ 嘀嘀嘀。。。。一看广东,难道是腾讯的面试,哦原来是电话面试。那就开始吧! 一、这是一次有故事的对话 先说说三次握手的各个状态 二、三次握手的客户端服务端状态 1 先画个图看看有哪些状态 嗯?这些ack seq是干啥的呢,不急不急,我们先把tcp协议格式内容给整明白了。 2 tcp协议内容解析 小贱先把tcp的头部搬过来 然后我们来解析一下各个字段是什么意思 字段名 字段描述 16位端口号 告知主机该报文是来自哪里以及传给哪个上层协议或应用程序(目的端口)的。 32位序列号 一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号 32位确认号 用作对另一方发送来的TCP报文段的响应 4位头部长度 标识该TCP头部有多少个32bit字(4字节)。因为4位最大能表示15,所以TCP头部最长是60字节。

TCP三次握手——建立连接

喜夏-厌秋 提交于 2020-01-01 08:17:12
当客户端与服务器端将TCP协议作为数据交换协议时,在开始传输数据之前,必须先在客户端与服务器端之间建立好“TCP连接”。 有了这条连接之后, 就可以通过它来传输数据。TCP的建立过程,客户端先送出一个带有syn标记的数据包给服务器端,这个数据包就是请求连接包,服务器端接着应答一个带有syn及ack标记的数据包给客户端,表示服务器端已经接受客户端的请求连接操作,接着客户端再回应一个带有ack标记的数据包给服务器端。在完成以上流程后,客户端及服务器端的TCP连接即正式建立。 TCP数据包里面用一个字节来存放tcp-flags状态,其中位1是Finish标志,连接终止信号;位2是Synchronize:连接请求信号;位3是Reset标志:立即终止连接;位5是Acknowledge:确认应答信号; 来源: https://www.cnblogs.com/Happy-Tuesday/archive/2013/05/29/3105276.html

关于Tcp/ip协议的三次握手和四次挥手

房东的猫 提交于 2019-12-04 19:53:32
首先我们需要知道,tcp/ip协议并不是一个协议,而是一个协议族,里面包好tcp,udp,ip等协议,tcp/ip网络协议栈包括应用层,传输层,网络层和链路层。 tcp协议是一中面向连接的,可靠的传输层协议。连接过程就像打电话的过程。现在简要介绍其三次握手的过程: 第一次握手:客户A向客户B发送一个连接请求,在这个包中,syn=1,seq=x, 第二次握手:客户B接受到了A发送的包,然后发送一个包进行确认,该包中syn=1,ack=1,ack_seq=x+1,seq=y; 第三次握手:客户A收到了B发送的包,也发送一个确认包,该包中ack=1.ack_seq=y+1,seq=x+1; 图解如下: 关于四次挥手的图解如下 解释: 第一次挥手:当客户A要断开Tcp连接时,发送一个包,其中fin=1,ack=1,seq=x,ack_seq=x; 第二次挥手:客户B知道A要断开后,发送一个确认包,其中ack=1,seq=y,ack_seq=x+1; 第三次挥手:客户B也断开Tcp连接,此时发送一个包,其中,fin=1,seq=y+1, 第四次挥手:客户A收到B的断开请求后,发送一个确认包:ack=1,seq=x+1,ack_seq=y+2; 来源: oschina 链接: https://my.oschina.net/u/123486/blog/82808

协议--Http

我是研究僧i 提交于 2019-12-03 03:39:35
转:https://www.cnblogs.com/niumoo/p/11763249.html 互联网基础协议 - HTTP HTTP的简介 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。 HTTP的特点 支持客户/服务器模式。 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。 由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 灵活

TCP协议中的三次握手和四次挥手

偶尔善良 提交于 2019-12-01 19:15:40
TCP连接管理 TCP是面向连接的协议,TCP传输连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP的传输连接包括3个状态:连接建立、数据传输和连接释放。 连接建立 最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。 首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号; 第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加1,ACK即确认(Acknowledgment)。 第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加1,到此一个TCP连接完成。此时,Z=X+1。 为什么TCP客户端最后还要发送一次确认呢? 一句话,主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。 如果使用的是两次握手建立连接,假设有这样一种场景,客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。此时此前滞留的那一次请求连接,网络通畅了到达了服务器,这个报文本该是失效的

对于TCP/IP协议的三次握手和四次挥手的理解

穿精又带淫゛_ 提交于 2019-12-01 18:48:24
因为很久之前被老师要求讲过这个问题,好久没有看,又有些迷糊了。只能写一篇博客来加强一下记忆 TCP报文段首部格式的几个名词 序列号seq:占4个字节, 用来标记数据段的顺序 ,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节, 期待收到对方下一个报文段的第一个数据字节的序号 ;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。 确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效 同步SYN: 连接建立时用于同步序号 。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。 终止FIN: 用来释放一个连接 。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接 ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号 。 三次握手过程 1.三次握手图片过程 2

TCP与UDP的区别以及三次握手和四次挥手

拜拜、爱过 提交于 2019-12-01 18:37:11
UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。虽然UDP不提供可靠交付,但是正是因为这样,省去和很多的开销,使得它的速度比较快,比如一些对实时性要求较高的服务,就常常使用的是UDP。对应的应用层的协议主要有 DNS,TFTP,DHCP,SNMP,NFS 等。 TCP,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。因此TCP是一种可靠的的运输服务,但是正因为这样,不可避免的增加了许多的开销,比如确认,流量控制等。对应的应用层的协议主要有 SMTP,TELNET,HTTP,FTP 等。 TCP的概述 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80。 TCP报文首部 源端口和目的端口,各占2个字节,分别写入源端口和目的端口; 序号,占4个字节, TCP连接中传送的字节流中的每个字节都按顺序编号 。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始; 确认号,占4个字节, 是期望收到对方下一个报文的第一个数据字节的序号 。例如