tcp四次挥手

【Python3之socket编程】

末鹿安然 提交于 2019-12-17 21:50:06
一、socket的定义   Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中, Socket其实就是一个门面模式,它把复杂的 TCP/IP协议族隐藏在 Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据,以符合指定的协议。 所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。 补充:也有人将socket说成ip+port,ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序,ip地址是配置到网卡上的,而port是应用程序开启的,ip与port的绑定就标识了互联网中独一无二的一个应用程序,而程序的pid是同一台机器上不同进程或者线程的标识 二、套接字发展史及分类   套接字起源于 20 世纪 70 年代加利福尼亚大学伯克利分校版本的 Unix,即人们所说的 BSD Unix。 因此,有时人们也把套接字称为“伯克利套接字”或“BSD 套接字”。一开始,套接字被设计用在同 一台主机上多个应用程序之间的通讯。这也被称进程间通讯,或 IPC。套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。 基于文件类型的套接字家族 套接字家族的名字:AF_UNIX

linux-网络监控命令-netstat进阶

 ̄綄美尐妖づ 提交于 2019-12-17 08:38:04
2.网络连接状态详解 共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的。 1)、LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN./* The socket is listening for incoming connections. 侦听来自远方TCP端口的连接请求 */ 2)、 SYN_SENT:客户端通过应用程序调用connect进行active open.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态置为SYN_SENT./*The socket is actively attempting to establish a connection. 在发送连接请求后等待匹配的连接请求 */ 3)、 SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN. 之后状态置为SYN_RECV/* A connection request has been received from the network. 在收到和发送一个连接请求后等待对连接请求的确认 */ 4)、ESTABLISHED: 代表一个打开的连接,双方可以进行或已经在数据交互了。/* The socket has an established connection. 代表一个打开的连接

TCP协议可靠性保证

泪湿孤枕 提交于 2019-12-17 05:46:47
TCP保证可靠性主要依靠下面7种机制: 1、检验和 TCP检验和的计算与UDP一样,在计算时要加上12byte的伪首部,检验范围包括TCP首部及数据部分,但是UDP的检验和字段为可选的,而TCP中是必须有的。计算方法为:在发送方将整个报文段分为多个16位的段,然后将所有段进行反码相加,将结果存放在检验和字段中,接收方用相同的方法进行计算,如最终结果为检验字段所有位是全1则正确(UDP中为0是正确),否则存在错误。 2、序列号 TCP将每个字节的数据都进行了编号,这就是序列号。 序列号的作用: 保证可靠性(当接收到的数据总少了某个序号的数据时,能马上知道) 保证数据的按序到达 提高效率,可实现多次发送,一次确认 去除重复数据数据传输过程中的确认应答处理、重发控制以及重复控制等功能都可以通过序列号来实现 3、确认应答机制(ACK) TCP通过确认应答机制实现可靠的数据传输。在TCP的首部中有一个标志位——ACK,此标志位表示确认号是否有效。接收方对于按序到达的数据会进行确认,当标志位ACK=1时确认首部的确认字段有效。进行确认时,确认字段值表示这个值之前的数据都已经按序到达了。而发送方如果收到了已发送的数据的确认报文,则继续传输下一部分数据;而如果等待了一定时间还没有收到确认报文就会启动重传机制。 正常情况下的应答机制: 4、超时重传机制 当报文发出后在一定的时间内未收到接收方的确认

基础网络概念

自作多情 提交于 2019-12-16 21:55:56
目录 基础网络概念 软件开发架构 B/S架构 C/S架构 基础网络概念 以太网:局域网与交换机 广播 ip地址与ip协议 mac地址 arp协议 ——查询IP地址和MAC地址的对应关系 TCP协议 UDP协议 tcp和udp的对比 每层常见的协议 基础网络概念 软件开发架构 B/S架构 C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的。 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。 C/S架构 B/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的。 Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查。 基础网络概念 以太网:局域网与交换机 广播  主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面

TCP 三次握手与四次挥手

旧街凉风 提交于 2019-12-16 19:26:15
TCP是什么 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。 TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急) TCP的三次握手 第一次握手:客户端向服务器发送请求报文,这时报文首部中的同部位SYN=1,并生成一个随机序列值seq=n。客户端进入syn-sent(同步已发送)状态,等待服务器确认 第二次握手:TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号ACK=n+1,同时自己也随机生成一个seq=m,此时服务器进入SYN-RCVD(同步收到)状态。 第三次握手:TCP客户端进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=m+1, TCP的三次握手抓包 使用nc -l localhost 8088 监听8088端口 客户端使用nc -v localhost 8088 连接8088端口 再开个终端使用 tcpdump -i lo -vv -nnn tcp port 8088 抓包8088 端口tcp连接 抓包数据 为什么需要三次握手 端口 client发送了一个请求连接的报文,但是网络不好,这个请求没有立即达到服务端

TCP三次握手原理详解

只谈情不闲聊 提交于 2019-12-16 18:22:03
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。 从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。 TCP协议:即传输控制协议,它提供的是一种可靠的数据流服务。当传送受差错干扰的数据,或举出网络故障,或网络负荷太重而使网际基本传输系统不能正常工作时,就需要通过其他的协议来保证通信的可靠。TCP就是这样的协议。TCP采用“带重传的肯定确认”技术来实现传输的可靠性。并使用“滑动窗口”的流量控制机制来高网络的吞吐量。TCP通信建立实现了一种“虚电路”的概念。双方通信之前,先建立一条链接然后双方就可以在其上发送数据流。这种数据交换方式能提高效率,但事先建立连接和事后拆除连接需要开销。 本文主要讲述的是 1、TCP三次握手原理,以及为什么要三次握手,两次握手带来的不利后果。 2、TCP四次挥手原理,为什么要四次挥手。 TCP三次握手原理: 首先,给张图片,建立TCP三次握手的直观印象。 每次握手(发送数据请求或应答)时,发送的数据为TCP报文,TCP段包含了源/目的地址,端口号,初始序号,滑动窗口大小,窗口 扩大因子,最大报文段长度等。还有一些标志位: (1)SYN:同步序号 (2)ACK:应答回复 (3)RST:复位连接,消除旧有的同步序号 (4)PSH:尽可能的将数据送往接收进程 (5)FIN

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

大兔子大兔子 提交于 2019-12-16 17:13:02
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_38950316/article/details/81087809 本文经过借鉴书籍资料、他人博客总结出的知识点,欢迎提问 序列号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表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接

Java语法进阶14-网络编程

时光怂恿深爱的人放手 提交于 2019-12-15 20:38:28
网络编程 软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。 B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。 网络通信协议 网络通信协议: 位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,它对数据的传输格式、传输速率、传输步骤等做了统一规定 TCP/IP协议: 它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,每一层都呼叫它的下一层所提供的协议来完成自己的需求 应用层:网络服务与最终用户的一个接口。协议有:HTTP、FTP、SMTP、DNS、TELNET、HTTPS、POP3等等。 表示层:数据的表示、安全、压缩。格式有:JPEG、ASCll、DECOIC、加密格式等。 会话层:建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会话 传输层:定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP、UDP。 网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP、IGMP、IP(IPV4 IPV6)、ARP、RARP。 数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。 物理层:建立、维护、断开物理连接。 IP(internet

TCP三次握手和四次挥手过程

╄→尐↘猪︶ㄣ 提交于 2019-12-13 11:56:42
TCP三次握手和四次挥手过程 ACK : Acknowledgement 1、三次握手 (1)三次握手的详述 首先客户端发送连接请求报文,服务端接受连接后回复ACK报文,并为这次连接分配资源。客户端接收到ACK报文后也向服务段发生ACK报文,并分配资源,这样TCP连接就建立了。 最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接。(A、B关闭状态CLOSED——B收听状态LISTEN——A同步已发送状态SYN-SENT——B同步收到状态SYN-RCVD——A、B连接已建立状态ESTABLISHED) B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求。然后服务器进程就处于LISTEN(收听)状态,等待客户的连接请求。若有,则作出响应。 1)第一次握手:A的TCP客户进程也是首先创建传输控制块TCB,然后向B发出连接请求报文段,(首部的同步位SYN=1,初始序号seq=x),(SYN=1的报文段不能携带数据)但要消耗掉一个序号,此时TCP客户进程进入SYN-SENT(同步已发送)状态。 2)第二次握手:B收到连接请求报文段后,如同意建立连接,则向A发送确认,在确认报文段中(SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y),测试TCP服务器进程进入SYN-RCVD(同步收到)状态; 3)第三次握手

TCP/IP协议详解

微笑、不失礼 提交于 2019-12-13 11:56:15
什么是TCP/IP协议 现在,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。 TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。 电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。 TCP/IP模型 应用层: 向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。 传输层: 提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。 网络层 : 负责相邻计算机之间的通信。其功能包括三方面。 处理来自传输层的分组发送请求