tcp四次挥手

Python网络编程

99封情书 提交于 2019-12-09 16:21:47
一、基于TCP协议的socket套接字编程 1、套接字工作流程 先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束,使用以下Python代码实现: import socket # socket_family 可以是 AF_UNIX 或 AF_INET。socket_type 可以是 SOCK_STREAM 或 SOCK_DGRAM。protocol 一般不填,默认值为 0 socket.socket(socket_family, socket_type, protocal=0) # 获取tcp/ip套接字 tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 获取udp/ip套接字 udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 1、 服务端套接字函数 s. bind ():绑定(主机,端口号)到套接字 s.

29.socket网络基础

本秂侑毒 提交于 2019-12-08 14:23:25
原文: https://www.cnblogs.com/linhaifeng/articles/6129246.html 一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构   互联网中处处是C/S架构   如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种)   腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二 osi七层 引子: 须知一个完整的计算机系统是由硬件、操作系统、应用软件三者组成,具备了这三个条件,一台计算机系统就可以自己跟自己玩了(打个单机游戏,玩个扫雷啥的) 如果你要跟别人一起玩,那你就需要上网了,什么是互联网? 互联网的核心就是由一堆协议组成,协议就是标准,比如全世界人通信的标准是英语 如果把计算机比作人,互联网协议就是计算机界的英语。所有的计算机都学会了互联网协议,那所有的计算机都就可以按照统一的标准去收发信息从而完成通信了。 人们按照分工不同把互联网协议从逻辑上划分了层级, 详见网络通信原理:http://www.cnblogs.com/linhaifeng/articles/5937962.html 为何学习socket一定要先学习互联网协议: 1.首先:本节课程的目标就是教会你如何基于socket编程

TCP和UDP

爷,独闯天下 提交于 2019-12-08 11:54:22
1:概括 TCP UTP 概括 :是面向接收的通讯协议,通过三次握手建立连接,通讯完成四次挥手 是面向无连接的通讯协议,UDP 数据包括目的端口号和源端口好信息 优点   tcp 在数据传递时,有确认,窗口、重传、阻塞等控制机制, 能保证数据正确性,较为可靠 udp 速度快 ,操作简单 要求系统资源较少,由于通讯不需要连接,可以实现广播发送 缺点 tcp 相对于udp 速度慢,要求系统资源较多 udp 传送 数据前并不与对方建立连接,对接收的数据也不发送确认信号,发送端也不知道数据是否会正确接收,也不会重复发送 ,不可靠 2、为什么UDP有时比TCP更有优势? UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。 (1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。 (2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。 采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响 3、UDP和TCP编程步骤也有些不同 3_1: TCP编程

计算机网络知识汇总---20191207

。_饼干妹妹 提交于 2019-12-07 17:32:26
本文来源参考:https://www.cnblogs.com/xdyixia/p/9275246.html。 OSI [Open System Interconnection] 分层(7层) :物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层) :网络接口层、网际层、运输层、 应用层。 五层协议 (5层) :物理层、数据链路层、网络层、运输层、 应用层。 TCP/IP五层模型每一层对应的设备分别是什么? 物理层: 网卡 数据链路层: 交换机 网络层: 路由器 传输层: 防火墙 应用层:计算机 每一层的协议如下 : 物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关) 数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机) 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器) 传输层:TCP、UDP、SPX 会话层:NFS、SQL、NETBIOS、RPC 表示层:JPEG、MPEG、ASII 应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS 二进制 每一层的作用如下 : 物理层: 通过媒介传输比特,确定机械及电气规范(比特Bit) 数据链路层 :将比特组装成帧和点到点的传递(帧Frame) 网络层 :负责数据包从源到宿的传递和网际互连(包PackeT)

TCP/IP协议栈详解

巧了我就是萌 提交于 2019-12-06 19:32:59
TCP/IP协议栈 TCP/IP协议是规范不同主机之间进行通信的一系列协议,其中涉及到数据的封装,传输,寻址等一系列内容,是计算机领域非常重要的基础知识,我们在Java中用到的Socket通信就是基于TCP/IP协议中的TCP协议,开发为一系列封装好的API供用户使用。为什么要制定这些协议呢?这些协议为通信领域指定了唯一的标准,为不同的网络供应商,设备制造商的生产和服务提供了一个统一的标准。TCP/IP协议栈就是一个类似数据结构中的栈的模型,它有很多层,每层承担着不同的功能,有不同的协议。我们一般可以把协议栈理解为一个四层的模型:应用层、传输层、网络层、链路层。应用层中有一些面向用户的与应用相关的协议,涉及到对数据的一些分析和处理,使得用户信息和数据流之间得到转换;传输层是负责执行数据流和数据段之间的转换,是数据信息的管理层面;网络层涉及到与其他主机的联系,对数据封装并找到合适的路径把信息发出去或者接收进来;链路层中主要是一系列为了实现相应功能的接口,是协议栈的最底层。一般来说,用户信息会从应用层开始,往下逐步被包装,当传到另一个主机的时候,再从下到上一步步打开包装,最终解析还原为用户信息。在这个过程中,各项协议确保了传输过程的实现以及数据的安全。 TCP/IP协议栈: 协议栈之应用层 应用层包括的协议有: 1、文件传输类:HTTP(超文本传输协议)、FTP(文件传输协议)

TCP协议与socket套接字

。_饼干妹妹 提交于 2019-12-06 14:46:17
一、TCP协议 TCP协议建立双向通道 1.三次握手,建立连接:   客户端向服务端发送建立连接的请求   服务端返回收到请求的信息给客户端,并且发送往客户端建立连接的请求   客户端接收到服务端发来的请求,返回接成功给服务端,完成双向连接 2.反馈机制:   客户端往服务端发送请求,服务端必须返回响应,   告诉客户端收到请求了,并且将服务端的数据一并返回给客户端。 洪水攻击:指的是通过伪造大量的请求,往对方服务器发送请求,导致对方服务器响应跟不上,以至于瘫痪。 半连接池listen: 限制用户在同一个时间段内的访问数量。 3.四次挥手,断开连接:   客户端向服务端发送断开连接的请求   服务端返回收到请求的信息给客户端   服务端确认所有数据接收完成以后,再发送同意断开连接的请求给客户端   客户端返回收到断开连接的请求,给服务端。 二、socket套接字通信 1.什么是socket socket是一个模块, 又称套接字,用来封装 互联网协议(应用层以下的层) 2.作用 socket可以实现 互联网协议应用层以下的层的工作。提高开发效率 3.使用 1 # 客户端 2 ''' 3 启动服务端后再启动客户端 4 ''' 5 import socket 6 # 买手机 7 client = socket.socket() 8 # 拨号 9 client.connect( 10 #

TCP

北慕城南 提交于 2019-12-06 14:33:20
TCP协议 当应用程序想通过TCP协议实现远程通信时,彼此之间必须先先建立双向通信通道,基于该双向通道实现数据的远程交互,该双向通道直到任意一方主动断开才会失效 三次握手 建立双向通道的过程称之为三次握手,建立通道的发起者可以是客户端也可以是服务端,下面我们就以客户端先主动发起为例 客户端会朝服务端发送一个请求询问服务端:"我能不能挖一条通往你家的地道" 服务端收到请求,回复说:"好吧 你挖吧",由于TCP是双向通道,客户端挖向服务端的通道只能给客户端朝服务端发消息使用,服务端要向给客户端发消息是没办法走这一条通道的,需要自己挖一条通往客户端的通道 所以服务端在回复同意客户端挖通道的同时还会问一句:"那我能不能也挖一条通往你家的通道" 客户端收到服务端请求后客户端到服务端的通道就挖成功了,然后也会同意服务端的请求,服务端挖向客户端的通道也会成功 总结:之所以称之为三次握手就是因为中间的服务端的同意,和请求合并成了一次请求 四次挥手 建立一个连接需要三次握手,而终止一个连接要经过四次握手 当服务端或者客户端不想再与对方进行通信之后,双方任意一方都可以主动发起断开链接的请求,我们还是以客户端主动发起为例 客户端由于已经没有任何需要发送给服务端的消息了,所以发起断开客户端到服务端的通道请求 服务端收到该请求后同意了 至此客户端到服务端的单项通道断开

【网络知识之五】TCP

吃可爱长大的小学妹 提交于 2019-12-06 12:16:29
TCP协议:传输控制协议。 一、TCP保证可靠性的机制 1、校验和 TCP报头有16位检验和: 由发送端填充, 检验形式有CRC校验等. 如果接收端校验不通过, 则认为数据有问题. 此处的校验和不光包含TCP首部, 也包含TCP数据部分. 2、序列号(按序到达) 序列号:TCP将每个字节的数据都进行了编号, 即为序列号。 3、确认应答 每一个ACK都带有对应的确认序列号, 意思是告诉发送者, 我已经收到了哪些数据,下一次你要从哪里开始发. 比如, 客户端向服务器发送了1005字节的数据, 服务器返回给客户端的确认序号是1003, 那么说明服务器只收到了1-1002的数据,1003, 1004, 1005都没收到.此时客户端就会从1003开始重发. 4、超时重传 两种场景: (a)客户端发给服务端时失败:客户端在一个特定时间间隔内没有收到服务端发来的确认应答, 就会进行重发; (b)服务端返回客户端确认失败:服务端可能会收到很多重复数据,通过序列号区分重复数据并且把重复的丢弃; 5、连接管理 5.1 建立连接-三次握手: 三次握手状态变化: 客户端发送SYN包给服务器,客户端进入SYN-SEND状态:CLOSED-->SYN-SEND; 服务器收到SYN包后将建立连接的SYN包和应答包一起发送给客户端,并且进入SYN-RCVD状态:LISTEN-->SYN-RCVD;

[网络] 在浏览器输入URL回车之后发生了什么

狂风中的少年 提交于 2019-12-06 10:59:02
目录 一 前言 二 URL解析 三 DNS域名解析 1 IP 地址 2 什么是域名解析 3 浏览器如何通过域名去查询 URL 对应的 IP 呢 4 小结 四 建立连接 1 TCP三次握手 2 SYN攻击 3 为什么不能用两次握手进行连接 五 发送HTTP请求 1 请求报文介绍   2 请求流程 六 服务器处理请求并返回 HTTP 报文 1. 服务器 2. MVC 后台处理阶段 3. HTTP响应报文 七 浏览器解析渲染页面 1 根据 HTML 解析 DOM 树 2 根据 CSS 解析生成 CSS 规则树 3 结合 DOM 树和 CSS 规则树,生成渲染树 4 根据渲染树计算每一个节点的信息(布局) 5 根据计算好的信息绘制页面 八 断开连接 1 四次挥手 2 为什么连接的时候是三次握手,关闭的时候却是四次握手? 3 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态? 回到顶部 一 前言   打开浏览器从输入网址到网页呈现在大家面前,背后到底发生了什么?经历怎么样的一个过程?先给大家来张总体流程图,具体步骤请看下文分解!      从URL输入到页面展现   总体来说分为以下几个过程:   (1)URL 解析   (2)DNS 解析:将域名解析成 IP 地址   (3)TCP 连接:TCP 三次握手   (4)发送 HTTP 请求   (5

TCP的三次握手和四次挥手结合室友的北京字节面试

女生的网名这么多〃 提交于 2019-12-06 10:53:17
室友在今天再次经历了字节跳动的面试,面试我全程助攻,对于面试过程以及面试官的态度和问题也都有听到,当面试官再次问道tcp的握手过程时,我不禁感叹这个东西我要是不会是真不行啊!所以背着室友在这里总结他的面试经历。 面试官是由TCP和UDP区别开始问起的, 然后问到TCP的三次握手过程: 这里首先讲解什么是三次握手? 三次握手就是在客户端和服务端进行TCP连接时需要发送三个包,目的是确定客户端和服务端的发送能力和接收能力都没有问题、实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换 TCP窗口大小 信息。 三次握手的过程: 第一次握手:客户端向服务端发送SYN报文段,并指明客户端的初始化序列号 ISN。 第二次握手:服务端收到客户端发送的SYN报文段,向客户端发送SYN报文,同时确定自己的ISN初始化序列号。 第三次握手:客户端向服务端发送ACK报文来建立TCP连接。 握手为什么要三次,两次行不行? 三次握手主要是为了确定客户端以及服务端的接收能力和发送能力都没问题 第一次握手:客户端发送报文,服务端接收报文,确认了客户端的发送能力以及服务端的接收能力都没问题; 第二次握手:服务端发送报文,客户端接收报文,客户端确认了自己的发送能力和接收能力和服务端的接收能力以及发送能力没问题,但是服务端没法确认客户端的接收能力是否正常。 第三次握手