tcp四次挥手

TCP的三次握手四次挥手

天涯浪子 提交于 2020-01-15 04:26:12
一、三次握手 1.wireshark 抓包 2.TCP报文手部 注意标志位: 1).同步 SYN = 1 表示这是一个连接请求或连接接受报文。 2).只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。 3).FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。 3.连接示意 二、四次挥手 1.知所以然 为什么建立连接协议是三次握手,而关闭连接却是四次握手呢? 这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用) 放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部 发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意 现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。   更明了的回答: 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。 这个原则是当一方完成它的数据发送任务后就能发送一 个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行 关闭的一方将执行主动关闭

TCP的三次握手与四次挥手理解及面试题(很全面)

流过昼夜 提交于 2020-01-14 23:33:02
本文经过借鉴书籍资料、他人博客总结出的知识点,欢迎提问 序列号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表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接 PS:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。 字段 含义 URG 紧急指针是否有效。为1,表示某一位需要被优先处理 ACK 确认号是否有效,一般置为1。 PSH

TCP三次握手、四次挥手几常见面试题全集

旧街凉风 提交于 2020-01-13 06:07:42
TCP三次握手、四次挥手几常见面试题全集 TCP报文首部 TCP连接的建立(三次握手) TCP连接的释放(四次挥手) 常见面试题汇总 本文按照先介绍TCP的三次握手和四次挥手的详细过程,再列出面试过程中常见的问题。 TCP报文首部 源端口和目的端口,各占2个字节,分别写入源端口和目的端口; 序号,占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始; 确认号,占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。例如,B收到了A发送过来的报文,其序列号字段是501,而数据长度是200字节,这表明B正确的收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701; 数据偏移,占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远; 保留,占6位,保留今后使用,但目前应都位0; 紧急URG,当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据; 确认ACK,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1; 推送PSH,当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应

事先准备好针和线才能编织未来(第七周)

╄→гoц情女王★ 提交于 2020-01-12 23:35:20
1、 简述osi七层模型和TCP/IP五层模型 OSI七层模型: 物理层:提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。 数据链路层:在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。 网络层:控制分组传送系统的操作、路由选择、拥护控制、网络互连等功能,它的作用是将具体的物理传送对高层透明。 传输层:提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。 会话层:提供两进程之间建立、维护和结束会话连接的功能;提供交互会话的管理功能,如三种数据流方向的控制,即一路交互、两路交替和两路同时会话模式 。 表示层:代表应用进程协商数据表示;完成数据转换、格式化和文本压缩。 应用层:提供OSI用户服务,例如事务处理程序、文件传送协议和网络管理等。 TCP/IP五层模型 物理层:负责光电信号传递方式。集线器工作在物理层。以太网协议。 数据链路层:负责设备之间的数据帧的传输和识别。交换机工作在数据链路层。例如网卡设备的驱动,帧同步,冲突检测,数据差错校验等工作。 网络层:负责地址管理和路由选择。路由器工作在网络层。 传输层:负责两台主机之间的数据传输。 应用层:负责应用程序之间的沟通。网络编程主要针对的就是应用层。 2、

【JavaWeb】UDP协议和TCP协议,TCP协议机制之ACK,超时重传机制等

半城伤御伤魂 提交于 2020-01-12 19:08:41
传输层:UDP协议 TCP协议 (UDP简单但不可靠,TCP复杂但可靠) 端口号:发送数据时,要带上本身进程的端口号,那么发送回来时,通过端口号才知道是哪个进程 (端口号总是和进程相关) 有“源端口号”“目的端口号” 在TCP/IP协议中,用“源ip”和源端口号” ”目的ip“ "目的端口号" “协议号”这样一个五元组来标识一个通信 知名端口号: ssh服务器,22端口 可以远程连接 ftp,21 做文件传输 一般操作远程主机时就使用ssh协议和ftp协议 http,80 https,442 (http明文,https密文,需要加密解密的过程) 一个进程是否可以绑定多个端口号: 答:可以 一个端口号是否可以被多个进程绑定? 答:不可以,一个端口号只能绑定一个进程 【UDP】协议 一个端口代表一个进程。UDP协议实现了端口,从而让某个数据包可以在送到指定IP地址的基础上, 进一步传送到某个端口。 【UDP 特点】 传输的过程类似于寄信: 1、(无连接):知道对端的IP和端口号就直接进行传输,不需要建立连接 2、(不可靠):没有确认机制,没有重传机制;如果因为因为网络故障无法发到对方, UDP协议层也不会给应用层返回任何错误信息。UDP发送数据时,只要将数据发出去就可以了,至于 接收端有没有收到,UDP本身是没有保障的 (重点!!!!) 3、(面向数据报)

HTTP(TCP/IP)通信协议

冷暖自知 提交于 2020-01-12 14:51:19
文章目录 HTTP(Hyper Text Transfer Protocol)即超文本传输协议 超文本: 传输: 协议: ISO 七层网络模型和TCP/IP四层概念模型 ISO 七层网络模型 TCP/IP四层概念模型 一个 HTTP 请求,在整个网络中的请求过程 发送过程 接收过程 为什么有了 MAC 层还要走 IP 层呢? IP协议和TCP/UDP协议 IP协议 TCP/IP TCP三次握手 TCP四次挥手 为什么握手只需要3次,挥手需要四次 TCP数据传输过程的流量控制(滑动窗口)和拥塞控制 (1)滑动窗口协议 (2)发送窗口 (3)接收窗口 (4)滑动窗口调整过程(慢开始&线性增长) UDP/IP TCP 和 UDP 的区别 为什么TCP是传输是可靠的? HTTP(Hyper Text Transfer Protocol)即超文本传输协议 超文本: 原来的计算机只有简单的文本格式,故文本就是指简单的文本格式,随着计算机的发展,出现了视频,图片,音乐等格式,而超文本就是原来文本语义的引申 传输: 由传输载体(例如同轴电缆,电话线,光缆)负责把二进制数据包由计算机终端传输到另一个终端的过程,称为传输(transfer) 协议: 协议就是一种约定和规范,大家都遵守的规范,只有都使用同一种规范,才能有条不紊的进行信息交互,常见的协议有: SMTP , TCP , UDP , FTP

计算机网络面试汇总(二) TCP和UDP协议

依然范特西╮ 提交于 2020-01-11 21:03:48
TCP协议 什么是TCP协议? 传输控制协议(TCP,Transmission Control Protocol)是一种 面向连接的、可靠的、基于字节流的传输层通信协议 。 TCP报文 wireshark抓包分析——TCP/IP协议 TCP三次握手 TCP 三次握手过程对于面试是必考的一个,所以不但要掌握 TCP 整个握手的过程,其中有些小细节也更受到面试官的青睐。 用动画给面试官解释 TCP 三次握手过程 该博客包含的要点有: 源端口号和目标端口号的目的是什么? 唯一标识每一个应用程序 序列号的作用是什么? 数据序列编号, 确保数据通信的有序性,避免网络中乱序的问题 确认序列号的作用是什么? 是接收确认端所期望收到的下一序列号。解决不丢包的问题。 ACK、SYN和FIN的作用是什么? ACK: 应答域有效。 客户端发送数据给服务端, 发送时ACK=0, 接收时ACK=1代表接收到数据。 SYN:同步序列号。TCP 握手的发送的第一个数据包。 FIN: 是否是 接受的最后的数据? 为什么进行 TCP 三次握手? TCP 三次握手过程? 为什么不是一次、二次握手, 而是三次握手? 防止了服务器端的一直等待而浪费资源。 TCP四次分手 TCP 三次握手过程对于面试是必考的一个,所以不但要掌握 TCP 整个握手的过程,其中有些小细节也更受到面试官的青睐。 动画:用动画给女朋友讲解 TCP

页面加载经历的过程【转载】

本小妞迷上赌 提交于 2020-01-11 18:30:14
总体来说分为以下几个过程: DNS 解析:将域名解析成 IP 地址 TCP 连接:TCP 三次握手 发送 HTTP 请求 服务器处理请求并返回 HTTP 报文 浏览器解析渲染页面 断开连接:TCP 四次挥手 一、URL 到底是啥 URL(Uniform Resource Locator),统一资源定位符,用于定位互联网上资源,俗称网址。 比如 http://www.w3school.com.cn/ht... ,遵守以下的语法规则: scheme: //host.domain:port/path/filename 各部分解释如下: scheme - 定义因特网服务的类型。常见的协议有 http、https、ftp、file,其中最常见的类型是 http,而 https 则是进行加密的网络传输。 host - 定义域主机(http 的默认主机是 www) domain - 定义因特网域名,比如 w3school.com.cn port - 定义主机上的端口号(http 的默认端口号是 80) path - 定义服务器上的路径(如果省略,则文档必须位于网站的根目录中)。 filename - 定义文档/资源的名称 二、域名解析(DNS) 在浏览器输入网址后,首先要经过域名解析,因为浏览器并不能直接通过域名找到对应的服务器,而是要通过 IP 地址。 1. IP 地址 IP

TCP 进阶

两盒软妹~` 提交于 2020-01-11 16:38:53
转自: https://www.cnblogs.com/caoyusongnet/p/9087633.html 一. 端口号 标准的端口号由 Internet 号码分配机构(IANA)分配。这组数字被划分为特定范围,包括 熟知端口号(0 - 1023)、注册端口号(1024 - 49151)和动态/私有端口号(49152 - 65535)。 如果我们测试这些标准服务和其他 TCP/IP 服务(Telnet、 FTP、 SMTP等) 使用的端口号,会发现它们大多数是奇数。这是有历史原困的,这些端口号从 NCP 端口号派生而来(NCP 是网络控制协议,在 TCP 之前作为 ARPANET 的传输层协议)。NCP 虽然简单,但不是全双工的,困此每个应用需要两个连接,并为每个应用保留奇偶成对的端口号。当 TCP 和 UDP 成为标准的传输层协议时,每个应用只需要一个端口号,因此来自 NCP 的奇数端口号被使用。 二. TCP 初始序列号 在 TCP 数据报中,有一个 序列号 (Sequence Number)。如果序列号被人猜出来,就会展现出 TCP 的脆弱性。 如果选择合适的序列号、IP地址以及端口号,那么任何人都能伪造出一个 TCP 报文段,从而 打断 TCP 的正常连接[RFC5961]。一种抵御上述行为的方法是使初始序列号(或者临时端口 号[RFC6056])变得相对难以被猜出

TCP三次握手和四次挥手

99封情书 提交于 2020-01-11 05:35:10
TCP 三次握手就好比两个人在街上隔着50米看见了对方,但是因为雾霾等原因不能100%确认,所以要通过招手的方式相互确定对方是否认识自己。 张三首先向李四招手(syn),李四看到张三向自己招手后,向对方点了点头挤出了一个微笑(ack)。张三看到李四微笑后确认了李四成功辨认出了自己(进入estalished状态)。 但是李四还有点狐疑,向四周看了一看,有没有可能张三是在看别人呢,他也需要确认一下。所以李四也向张三招了招手(syn),张三看到李四向自己招手后知道对方是在寻求自己的确认,于是也点了点头挤出了微笑(ack),李四看到对方的微笑后确认了张三就是在向自己打招呼(进入established状态)。 于是两人加快步伐,走到了一起,相互拥抱。 我们看到这个过程中一共是四个动作,张三招手--李四点头微笑--李四招手--张三点头微笑。其中李四连续进行了2个动作,先是点头微笑(回复对方),然后再次招手(寻求确认),实际上可以将这两个动作合一,招手的同时点头和微笑(syn+ack)。于是四个动作就简化成了三个动作,张三招手--李四点头微笑并招手--张三点头微笑。这就是三次握手的本质,中间的一次动作是两个动作的合并。 我们看到有两个中间状态,syn_sent和syn_rcvd,这两个状态叫着「半打开」状态,就是向对方招手了,但是还没来得及看到对方的点头微笑。syn_sent是主动打开方的