tcp四次挥手

精辟的tcp11种状态讲解

。_饼干妹妹 提交于 2019-11-28 04:58:20
TCP的11种状态 TCP三次握手建立连接 Tcp头部 六个标志位中,我们要用到三个: SYN :SYN= 1 表示这是一个连接请求或连接接受报文。在建立连接时用来进行同步序号(个人理解是,在建立连接的时候,提醒对方记录本方的起始序号)。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若是同意建立连接,则应响应的报文段中使SYN=1、ACK=1。因此SYN=1表示该报文是一个连接请求报文或者是一个连接请求接收报文。 ACK :确认号只有在该位设置为1的时候才生效,当该位为0是表示确认号无效。TCP规定,在TCP连接建立后所有传送的数据报文段ACK都必须设置为1。 FIN :当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。 此外我们还需要用到序号和确认号: 序号 :占4个字节,它的范围在0-2^32-1,序号随着通信的进行不断的递增,当达到最大值的时候重新回到0在开始递增。TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按照顺序编号。整个要传送的字节流的起始号必须在连接建立时设置。首部中的序列号字段指的是本报文段所发送的数据的第一个字节的序号。例如,一个报文序号是301,而携带的数据共有100字节。则表示本次报文中的序号是301,下一个报文的序号是401.重复一下,每一个报文的序号是该报文包含的字节中第一个字节的编号。

动画:用动画给面试官解释 TCP 三次握手过程

醉酒当歌 提交于 2019-11-28 02:23:29
作者 | 小鹿 来源 | 公众号:小鹿动画学编程 写在前边 TCP 三次握手过程对于面试是必考的一个,所以不但要掌握 TCP 整个握手的过程,其中有些小细节也更受到面试官的青睐。 对于这部分掌握以及 TCP 的四次挥手,小鹿将会以动画的形式呈现给每个人,这样将复杂的知识简单化,理解起来也容易了很多,尤其对于一个初学者来说。 学习导图 一、TCP 是什么? TCP(Transmission Control Protocol 传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议。 我们知道了上述了解到了 TCP 的定义,通俗一点的讲, TCP 就是一个双方通信的一个规范标准(协议)。 我们在学习 TCP 握手过程之前,首先必须了解 TCP 报文头部的一些标志信息,因为在 TCP 握手的过程中,会使用到这些报文信息,如果没有掌握这些信息,在学习握手过程中,整个人处于懵逼状态,也是为了能够深入 TCP 三次握手的原理。 二、TCP 头部报文 2.1 source port 和 destination port 两者分别为「源端口号」和「目的端口号」。源端口号就是指本地端口,目的端口就是远程端口。 一个数据包( pocket )被解封装成数据段( segment )后就会涉及到连接上层协议的端口问题。 可以这么理解,我们可以想象发送方很多的窗户,接收方也有很多的窗户

计算机网络基础知识点四

╄→尐↘猪︶ㄣ 提交于 2019-11-28 01:24:59
运输层 网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信,运输层向高层用户屏蔽了下面网络核心的细节,它使应用进程看见的就好像在两个运输实体之间有一条端到端的逻辑通信信道。 UDP和TCP的特点 用户数据报协议UDP的主要特点是: 1)无连接 2)尽最大努力交付 3)面向报文 4)无拥塞控制 5)支持一对一、一对多、多对一和多对多的交互通信 6)首部开销小(只有四个字段:源端口、目的端口、长度、检验和) 传输控制协议TCP的主要特点: 1)面向连接 2)每一条TCP连接只能是点对点的(一对一) 3)提供可靠交付的服务 4)提供全双工通信 5)面向字节流 TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点。这样的端点就叫做套接字或插口。套接字socket=(IP地址:端口号);每一条TCP连接唯一的被通信两端的两个端点(即两个套接字)所确定,即TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)} UDP的首部格式 首部字段只有8个字节,包括源端口、目的端口、长度、检验和。12字节的伪首部是为了计算检验和临时添加的。 TCP的首部格式 TCP报文段首部的前20个字节是固定的 1)源端口和目的端口:分别写入源端口号和目的端口号 2)序号:用于对字节流进行编号 3)确定号:期望收到的下一个报文段的序号

HTTP协议

一笑奈何 提交于 2019-11-28 01:14:51
                                      HTTP请求的7个步骤 1.建立TCP链接 2.浏览器发送请求(GET/sample/hello.jsp HTTP/1.1) 3.浏览器发送请求头(request header) 4.服务器发送应答(HTTP/1.1 200 OK) 5.服务器发送应答头(response header) 6.服务器发送数据 7.服务器关闭TCP连接 HTTP协议的基本组成 1.HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文。请求端(客户端)的 HTTP 报文叫做请求报文;响应端(服务器端)的叫做响应报文。HTTP 报文本身是由多行(用 CR[carriage return]+LF[line feed] 作换行符)数据构成的字符串文本。 2.HTTP 报文结构 HTTP 报文大致可分为报文首部和报文主体两部分。两者由最初出现的空行(CR+LF)来划分。通常,并不一定有报文主体。如下: 2.1请求报文结构 请求报文的首部内容由以下数据组成: 请求行 —— 包含用于请求的方法、请求 URI 和 HTTP 版本。 首部字段 —— 包含表示请求的各种条件和属性的各类首部。(通用首部、请求首部、实体首部以及RFC里未定义的首部如 Cookie 等) 请求报文的示例,如下: 图3:请求报文示例 2.2响应报文结构

netstat命令详解

时光毁灭记忆、已成空白 提交于 2019-11-28 01:07:38
它主要的用法和详解! (netstat -na 命令),本文主要是说Linux下的netstat工具,然后详细说明一下各种网络连接状态。 netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -nr 1.netstat命令详解 其实我常用的是 netstat -tnl | grep 443 (查看443端口是否被占用),如果有当前是root用户,我喜欢用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程PID)。 netstat 功能说明:显示网络状态。 语  法:netstat [-acCeFghilMnNoprstuvVwx] [-A<网络类型>][--ip] 补充说明:利用netstat指令可让你得知整个Linux系统的网络情况。 参  数: -a 或–all 显示所有连线中的Socket。 -A <网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。 -c 或–continuous 持续列出网络状态。 -C 或–cache 显示路由器配置的快取信息。 -e 或–extend 显示网络其他相关信息。 -F 或 –fib 显示FIB。 -g 或–groups 显示多重广播功能群组组员名单。 -h 或–help 在线帮助。 -i 或–interfaces 显示网络界面信息表单。 -l 或

【TCP协议】---TCP三次握手和四次挥手

冷暖自知 提交于 2019-11-27 23:28:24
TCP协议 本文内容如下: 1)TCP协议概念 2)TCP头部结构和字段介绍 3)TCP流量控制 滑动窗口 4)TCP拥塞控制 慢启动、拥塞避免、快重传、快恢复 有关TCP的三次握手四次挥手单独写了一篇博客: 【TCP协议】---TCP三次握手和四次挥手 有关TCP粘包和黏包,也单独写一篇博客,下一篇博客就写有关粘包黏包问题。 一、TCP概念 TCP(Transmission Control Protocol 传输控制协议)是一种 面向连接(连接导向) 的、 可靠的 、 基于IP的传输层 协议。 首先来看看OSI的七层模型 我们需要知道 TCP 工作在网络OSI的七层模型中的第四层—— 传输层 , IP在第三层——网络层 , ARP 在第二层——数据链路层 ;同时,我们需要简单的知道,数据从 应用层发下来,会在每一层都会加上头部信息,进行 封装,然后再发送到数据接收端。这个基本的流程你需要知道,就是每个数据都会经过数据的封装和解封 装的过程。 在OSI七层模型中,每一层的作用和对应的协议如下: 二、TCP头部结构和字段介绍 从上面图片可以看出,TCP协议是封装在IP数据包中。 下图是TCP报文数据格式。TCP首部如果不计选项和填充字段,它通常是20个字节。 下面分别对其中的字段进行介绍: 源端口和目的端口 各占2个字节

TCP协议详解

一个人想着一个人 提交于 2019-11-27 23:28:04
为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。 但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。 TCP/IP协议分层 ![TCP分层2.jpg](//upload-images.jianshu.io/upload_images/2964446-94da7e7442050d15.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) TCP/IP协议族按照层次由上到下,层层包装。 应用层 : 向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等

TCP/IP之基本概念一

為{幸葍}努か 提交于 2019-11-27 22:33:12
一、应用层 1 DNS:域名系统(Domain Name System),将互联网上的主机名字即域名转换为IP地址, 端口号53 ,解析过程如下: 如果主机和本地的缓存里面没有对应的IP地址则: 主机--->本地域名服务器: 本地--->根 本地--->顶级 本地--->权限 本地域名服务器--->主机; 2 FTP:文件传送协议(File Transter Protocol) (1)采用客户端/服务器方式,服务器进程一般分为两部分,即1个主进程,负责等待新的请求;另外有多个从属进程,负责处理单个请求; (2)主进程的工作步骤如下: 打开 端口号21 ,等待客户端进程连接; 客户端发送连接请求后,启动从属进程处理请求,处理完成后从属进程立即终止,但是其处理过程期间可能会创建一些子进程; 主进程继续等待客户端进程连接,主进程和从属进程是并发进行的; (3)从属进程一般分为两个:控制进程和数据传送进程,工作步骤如下: 控制进程:和客户端建立TCP的控制连接(端口号21),用来接收客户端发出的传送请求,然后创建数据传送进程,如下; 数据传送进程:和客户端建立TCP的数据连接(端口号20),用来完成实际的文件传送,传送完成后关闭TCP连接并立即终止; 3 TELNET:远程终端协议 (1)TELNET可以在本地通过TCP连接登录到远地的另一台主机上,通过主机名或IP地址

tcp的三次握手和四次挥手

女生的网名这么多〃 提交于 2019-11-27 21:39:23
TCP协议: 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1] 定义。他是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。 首先我们来看下他的报头: 我们来分析分析每部分的含义和作用 源端口号/目的端口号: 表示数据从哪个进程来, 到哪个进程去. 32位序号: 4位首部长度: 表示该tcp报头有多少个4字节(32个bit) 6位保留: 顾名思义, 先保留着, 以防万一 6位标志位: URG: 标识紧急指针是否有效 ACK: 标识确认序号是否有效 PSH: 用来提示接收端应用程序立刻将数据从tcp缓冲区读走 RST: 要求重新建立连接. 我们把含有RST标识的报文称为复位报文段 SYN: 请求建立连接. 我们把含有SYN标识的报文称为同步报文段 FIN: 通知对端, 本端即将关闭. 我们把含有FIN标识的报文称为结束报文段 16位窗口大小: 16位检验和: 由发送端填充, 检验形式有CRC校验等. 如果接收端校验不通过, 则认为数据有问题. 此处的校验和不光包含TCP首部, 也包含TCP数据部分. 16位紧急指针: 用来标识哪部分数据是紧急数据. 选项和数据暂时忽略 连接管理机制: 正常情况下,tcp需要经过三次握手才能建立连接

【网络编程】

时光总嘲笑我的痴心妄想 提交于 2019-11-27 20:43:38
" 目录 1.socket层 2.理解socket 3.套接字的发展史 4.网络基础 5.socket基本操作 6.socket进阶 7.黏包 8.解决黏包 8.socket的更多方法 1.socket层 2.理解socket socket是应用层与TCP/IP协议族的中间软件抽象层,它是一组接口。在设计模式中,socket其实就是一个面膜,它把复杂的TCP/IP协议族隐藏在socket接口后面,对于用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。 3.套接字的发展史 套接字起源于20世纪70年代 加利福尼亚 大学伯克利分校版本的Unix,即人们所说的BSD Unix。因此,有时人们也把套接字称为“伯克利套接字”或“BSD套接字”。一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯,这也被称为进程间通讯或IPC。套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。 基于文件类型的套接字家族:AF_UNIX unix下一切皆文件,基于文件的套接字调用的就是底层的文件系统来获取数据,两个套接字进程运行在同一机器,可以通过访问同一个文件系统间接完成通信 基于网络类型的套接字家族:AF_INET 还有AF_INET6被用于ipv6,以及一些其他的地址家族,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用