tcp四次挥手

TCP的三次握手和四次挥手

折月煮酒 提交于 2020-01-20 04:18:38
tcp是一种传输层通信协议,一个TCP连接通常分为三个阶段:连接,数据传输和关闭,通过三次握手来建立一个连接,四次挥手断开一个连接 目录 TCP报文头部介绍 三次握手建立连接 四次挥手断开连接 TCP的特点及使用场景 TCP报文头部介绍 TCP报文头部由以下几部分构成: 源端口号 目标端口号 序列号 确认号 头部长度 六个标志位 窗口大小 校验和 紧急指针 TCP头部选项 源端口号(16位) 标示报文的来源(客户端产生临时端口号) 目标端口号(16位) 标示报文的目的地(服务端指定端口号) 序列号(32位) 保证服务端接收到所有数据后能按正确顺序拼接起来,该序列号是由系统初始化的一个随机值ISN,一个报文的序列号=ISN+这个报文携带的数据的第一个字节的偏移量。 例子:要发5个报文,第一个报文的第一个字节的偏移量为0,序列号就是ISA+0;第一个报文携带的数据大小是1kb(1024),所以第二个报文的第一个字节的偏移量就是1024,序列号就是ISA+1024,以此类推。 (注意实际上三次握手时是会占据一个序列号的,所以实际上正式发送数据时第一个报文的序列号是ISA+1+0,这里为了方便理解就不考虑三次握手时占据的那个序列号)。 确认号(32位) 服务端收到客户端发来的报文后需要给客户端回复一个ack数据包,告诉客户端数据已经收到。回复报文的确认号=服务端收到的报文的序列号+1。

计算机网络知识点整理

别说谁变了你拦得住时间么 提交于 2020-01-18 06:54:19
(更新中) 参考书:《计算机网络自顶向下方法 原书第七版》 第一章 计算机网络和因特网 1、什么是协议? 协议(protocol) ,定义了在两个或多个通信实体间 传输报文的格式和顺序 ,以及 报文发送和/或接收一条报文或其他事件所采取的动作 。 2、什么是网络边缘,常用设备有哪些? 与因特网相连的计算机和其他设备称为端系统 例如: 桌面计算机 服务器 移动计算机。 3、常用家庭接入方式有哪些,企业和移动接入方式有哪些? 家庭接入 : DSL(用户数字线) 电缆 FTTH(光纤到户) 拨号 卫星 企业接入 以太网 WIFI 移动接入 3G LTE(长期演进) 4、导引型物理传输媒体有哪些?非导引型物理传输媒体有哪些? 导引型物理传输媒体 双绞铜线 同轴电缆 光纤 非导引型物理传输媒体 陆地无线电信道 卫星无线电信道 5、什么是网络核心?网络核心通常设备有哪些? 互联因特网 端系统的分组交换机和链路构成的网状网络 。 网络核心通常设备有 路由器(Route) 和 链路层交换机(link-layer switch) 。 6、简单描述存储转发传输机制? 传输当前分组时,需要完全的接收到分组,才能把该分组推向数据链路。 7、网络中数据交换的两种基本方式时什么? 分组交换 电路交换 。 8、电路交换中的复用方式有哪些?分组交换和电路交换的对比? 复用方式: 频分复用 和 时分复用 。

TCP的三次握手与四次挥手(详解+动图)

梦想的初衷 提交于 2020-01-18 05:05:01
背景描述 通过上一篇中网络模型中的 IP层的介绍 ,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机, 但是并没有交付给主机的具体应用进程 。而 端到端的通信 才应该是应用进程之间的通信。 UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。虽然UDP不提供可靠交付,但是正是因为这样,省去和很多的开销,使得它的速度比较快,比如一些对实时性要求较高的服务,就常常使用的是UDP。对应的应用层的协议主要有 DNS,TFTP,DHCP,SNMP,NFS 等。 TCP,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。因此TCP是一种可靠的的运输服务,但是正因为这样,不可避免的增加了许多的开销,比如确认,流量控制等。对应的应用层的协议主要有 SMTP,TELNET,HTTP,FTP 等。 常用的熟知端口号 应用程序 FTP TFTP TELNET SMTP DNS HTTP SSH MYSQL 熟知端口 21,20 69 23 25 53 80 22 3306 传输层协议 TCP UDP TCP TCP UDP TCP TCP TCP TCP的概述 TCP把连接作为最基本的对象

解决TIME_WAIT过多造成的问题

假如想象 提交于 2020-01-18 03:57:05
1、time_wait的作用:   TIME_WAIT状态存在的理由:   1)可靠地实现TCP全双工连接的终止 在进行关闭连接四次挥手协议时,最后的ACK是由主动关闭端发出的,如果这个最终的ACK丢失,服务器将重发最终的FIN,因此客户端必须维护状态信息允许它重发最终的ACK。如果不维持这个状态信息,那么客户端将响应RST分节,服务器将此分节解释成一个错误(在java中会抛出connection reset的SocketException)。   因而,要实现TCP全双工连接的正常终止,必须处理终止序列四个分节中任何一个分节的丢失情况,主动关闭的客户端必须维持状态信息进入TIME_WAIT状态。 2)允许老的重复分节在网络中消逝 TCP分节可能由于路由器异常而“迷途”,在迷途期间,TCP发送端可能因确认超时而重发这个分节,迷途的分节在路由器修复后也会被送到最终目的地,这个原来的迷途分节就称为lost duplicate。 在关闭一个TCP连接后,马上又重新建立起一个相同的IP地址和端口之间的TCP连接,后一个连接被称为前一个连接的化身(incarnation),那么有可能出现这种情况,前一个连接的迷途重复分组在前一个连接终止后出现,从而被误解成从属于新的化身。 为了避免这个情况,TCP不允许处于TIME_WAIT状态的连接启动一个新的化身,因为TIME_WAIT状态持续2MSL

python学习之复习整理

末鹿安然 提交于 2020-01-16 18:18:56
计算机网络相关知识点整理 : 1. OSI,TCP/IP,五层协议的体系结构,以及各层协议? OSI分层(7层) 物理层、数据链路层、网络层、运输层、会话层、表示层、应用层 TCP/IP分层(4层) 网络接口层、网络层、运输层、应用层 五层协议(5层) 物理层、数据链路层、网络层、运输层、应用层 2. TCP 和 UDP 是什么?简述它们有什么区别? TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输 TCP对应的协议: (1) FTP:定义了文件传输协议,使用21端口。 (2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。 (3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。 (4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。 (5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。 UDP对应的协议: (1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。 (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。 (3) TFTP(Trival File Transfer Protocal)

计算机网络常见面试题

混江龙づ霸主 提交于 2020-01-16 16:06:08
一 OSI与TCP/IP各层的结构与功能,都有哪些协议? 小说网 m.198200.com 学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。 结合互联网的情况,自上而下地,非常简要的介绍一下各层的作用。 1.1 应用层 应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等。我们把应用层交互的数据单元称为报文。 域名系统 域名系统(Domain Name System缩写 DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。(百度百科)例如:一个公司的 Web 网站可看作是它在网上的门户,而域名就相当于其门牌地址,通常域名都使用该公司的名称或简称。例如上面提到的微软公司的域名,类似的还有:IBM 公司的域名是 www.ibm.com、Oracle 公司的域名是 www.oracle.com

Java基础(19)——网络编程

拥有回忆 提交于 2020-01-16 15:08:02
目录 第一章 网络编程入门 1.1软件结构 1.2 网络通信协议 1.3 协议分类 1.4 网络编程三要素 协议 IP地址 端口号 第二章 TCP通信程序 2.1 概述 2.2 Socket类 构造方法 成员方法 2.3 ServerSocket类 构造方法 成员方法 2.4 简单的TCP网络程序 TCP通信分析图解 客户端向服务器发送数据 服务器向客户端回写数据 第三章 综合案例 3.1 文件上传案例 文件上传分析图解 基本实现 文件上传优化分析 优化实现 信息回写分析图解 回写实现 3.2 模拟B\S服务器(扩展知识点) 案例分析 案例实现 访问效果 第一章 网络编程入门 1.1软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。 B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。 网络编程 ,就是在一定的协议下,实现两台计算机的通信的程序。 1.2 网络通信协议 **网络通信协议:**通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议

signal(SIGCHLD, SIG_IGN)和signal(SIGPIPE, SIG_IGN);

感情迁移 提交于 2020-01-16 03:52:59
** signal(SIGCHLD, SIG_IGN)和signal(SIGPIPE, SIG_IGN); signal(SIGCHLD, SIG_IGN); 因为并发服务器常常fork很多子进程,子进程终结之后需要服务器进程去wait清理资源。如果将此信号的处理方式设为忽略,可让内核把僵尸子进程转交给init进程去处理,省去了大量僵尸进程占用系统资源。(Linux Only) 对于某些进程,特别是服务器进程往往在请求到来时生成子进程处理请求。如果父进程不等待子进程结束,子进程将成为僵尸进程(zombie)从而占用系统资源。如果父进程等待子进程结束,将增加父进程的负担,影响服务器进程的并发性能。在Linux下可以简单地将 SIGCHLD信号的操作设为SIG_IGN。 signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协议的语义, 表示对端只是关闭了其所负责的那一条单工信道, 仍然可以继续接收数据. 也就是说, 因为TCP协议的限制, 一个端点无法获知对端的socket是调用了close还是shutdown. 对一个已经收到FIN包的socket调用read方法, 如果接收缓冲已空, 则返回0,

UNP——第二章,TCP握手与挥手分析

痞子三分冷 提交于 2020-01-16 01:45:36
1.握手 说明:   下面涉及 FIN,SYN,ACK之类数据时,都是由TCP服务收发,   涉及 accept, listen 之类api,都是 应用进程 完成。   都统一使用 客户端,服务端描述,请自行分辨。 (1)首先描述下3次握手,TCP协议做了什么。 客户端,主动打开,发送自己的序列号SYNj,并期待对方回复ACKj+1 服务端,被动打开,接送自己的序列号SYNk和ACKj+1,并期待对方回复ACKk+1 客户端,接收对方ACK,己方打开完成,接收对方SYN,发送ACKk+1 服务端,接收对方ACK,己方打开完成。 分析下:   首先打开分为,被动打开和主动打开。   当接收到对方的ACK,则己方打开完成,则可以使用socket进行读写操作,但并不保证正常。 (2)结合 系统调用分析三次握手 客户端,listen,进行被动打开 服务端,connect ,进行主动打开,发送SYNj(如果乙方此时没有listen 完成,则connect 失败) 客户端,回复SYNk + ACKj+1, 应用层无任何变化。 服务端,收到 ACKj+1 + SYNk,并回复 ACKk+1, 甲方打开完成,connect 返回。 客户端,收到ACKj+1,可以进行 read,write。 服务端,accept,如果乙方没有收到 SYNj 则会阻塞,否则返回 服务端,收到ACKk+1,可以进行

TCP三次握手四次挥手

旧巷老猫 提交于 2020-01-15 06:34:04
TCP三次握手四次挥手 标志位缩写 全称 中文 SYN synchronous 建立联机 ACK acknowledgement 确认 PSH push 传送 FIN finish 结束 RST reset 重置 URG urgent 紧急 Seq Sequence number 顺序号码 ACK Acknowledge number 确认号码 状态名称 意义 LISTEN 侦听来自远方TCP端口的连接请求 SYN-SENT 在发送连接请求后等待匹配的连接请求 SYN-RECEIVED 在收到和发送一个连接请求后等待对连接请求的确认 ESTABLISHED 代表一个打开的连接,数据可以传送给用户 FIN-WAIT-1 等待远程TCP的连接中断请求,或先前的连接中断请求的确认 FIN-WAIT-2 从远程TCP等待连接中断请求 CLOSE-WAIT 等待从本地用户发来的连接中断请求 CLOSING 等待远程TCP对连接中断的确认 LAST-ACK 等待原来发向远程TCP的连接中断请求的确认 TIME-WAIT 等待足够的时间以确保远程TCP接收到连接中断请求的确认 CLOSED 没有任何连接状态 【注意】 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒