tcp四次挥手

再议三次握手

谁说胖子不能爱 提交于 2019-11-29 13:16:57
再议三次握手 tcp连接的三次握手和四次挥手,可以说是很多人的惯性认知了,在网上很多人的文章啊博客啊,视屏教程,还有大学老师的授课中也会这样说,tcp的三次握手,这也是面试可以说是必考的题目。然后呢在2019-9-12的夜里突然想到这个问题,这个三次握手到底是怎么回事,怎么会有三次握手呢,我的老师有一句话我记得很清楚,计算机的很多东西都是人类社会的映射,结合实际的生活经验可以理解很多东西,比如数据结构中的队列啊,栈,二叉树,面向对象啊,抽象,继承之类的显然都是,但三次握手是怎么回事,如果以握手来做比为什么是三次,和一个人握三次手这显然是,非常不符合现实逻辑的。那么下面帮大家回顾在一下tcp连接的过程,已经很熟悉的完全可以跳过下面这段 tcp的连接过程 在tcp要建立连接的时候发送方一般是客户端client,接受方一般是服务端server,下面都以这两个为例, client第一次向server发送的请求报文包含一个SYN=1,和一个随机数 seq=x, 然后server回复给client: SYN=1 和发送的随机数加一 : seq=x+1, 最后client再回复给server:ACK=1, 那么大致是这个过程,这个过程中的几个关键字这里说一下 SYN(Synchronize Sequence Numbers) 同步序列编号, ACK(Acknowledge character)

Python学习日记(二十九) 网络编程

痞子三分冷 提交于 2019-11-29 12:44:24
早期的计算机通信需要有一个中间件,A要给B传东西,A必须要把信息传给中间件,B再把从中间件中拿到信息 由于不同机器之间需要通信就产生了网络 软件开发的架构 1.C/S架构 服务器-客户机,即Client-Server架构,C/S架构通常采取两层结构.Sever负责数据的管理,Client负责完成与用户的交互任务 这里来说Client主要是某个应用软件的exe文件,程序要在安装后,才能运行在用户电脑上。 例如:QQ、微信、网易云音乐等 2.B/S架构 浏览器端-服务器,即Browser-Sever,B/S架构是WEB兴起后的一种网络架构模式,WEB浏览器是客户端最主要的应用软件.这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用.客户机上只要安装一个Browser,服务器安装Oracle、SQL Sever等数据库.浏览器通过Web Sever同数据库进行数据交互,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。 例如:百度、知乎、豆瓣、博客园等 3.B/S架构和C/S架构之间的关系 B/S架构是C/S架构的一种 计算机网络的发展及基础网络概念 早期:联机 想要实现通信就必须要网卡和网线,每个网卡上都有一个全球唯一的MAC地址 MAC地址 :英文名为Media Access Control

基于TCP协议的socket套接字编程

回眸只為那壹抹淺笑 提交于 2019-11-29 11:48:54
基于TCP协议的socket套接字编程 一、什么是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是同一台机器上不同进程或者线程的标识。 二、套接字发展史及分类 2.1 基于文件类型的套接字家族 套接字家族的名字:AF_UNIX unix一切皆文件,基于文件的套接字调用的就是底层的文件系统来取数据,两个套接字进程运行在同一机器,可以通过访问同一个文件系统间接完成通信 2.2 基于网络类型的套接字家族 (还有AF_INET6被用于ipv6,还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用

py网络编程学习笔记

纵然是瞬间 提交于 2019-11-29 09:44:43
一、异常处理 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下 而错误分为两种: 1、语法错误 语法错误即为SB错误 2、逻辑错误 逻辑错误有数据类型错误,取值错误等,都是自己逻辑混乱导致。 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,一个异常标识一种错误 常用异常 1 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x 2 IOError 输入/输出异常;基本上是无法打开文件 3 ImportError 无法引入模块或包;基本上是路径问题或名称错误 4 IndentationError 语法错误(的子类) ;代码没有正确对齐 5 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] 6 KeyError 试图访问字典里不存在的键 7 KeyboardInterrupt Ctrl+C被按下 8 NameError 使用一个还未被赋予对象的变量 9 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了) 10 TypeError 传入对象类型与要求的不符合 11 UnboundLocalError

TCP的三次握手和四次挥手

我只是一个虾纸丫 提交于 2019-11-29 06:57:28
本文主要借鉴他人优秀博客和微信公众号以及个人一些观点编写,如有不正,欢迎留言! 引言:HTTP和HTTPS协议请求时都会通过TCP三次握手建立TCP连接。(HTTPS连接除了三次握手外,还需要使用SSL证书,保证数据传输的正确性、保密性和不可更改性)。 在介绍之前,有几个概念大家先了解一下,后面三次握手和四次挥手都需要用到。 概念 确认ACK:又称响应标识。占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表示这是一个关闭请求,或关闭接收报文段,此报文段的发送方的数据已经发送完毕,并要求释放运输连接。 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号

面试问题之计算机网络:TCP如何保证数据可靠传输

微笑、不失礼 提交于 2019-11-29 04:35:47
转载于:https://blog.csdn.net/liuchenxia8/article/details/80428157 TCP协议传输的特点主要就是面向字节流、传输可靠、面向连接。 TCP保证数据可靠传输的方式主要有以下六点:校验和、确认应答与序列号、超时重传、连接管理、流量控制、拥塞控制。 1、校验和 在数据传输的过程中,将发送的数据段都当做一个16位的整数。将这些整数加起来。并且前面的进位不能丢弃,补在后面,最后取反,得到校验和。发送方在发送数据之前计算校验和,并进行校验和的填充。接收方收到数据后,对数据以同样的方式进行计算,求出校验和,与发送方的进行比对。 注意:如果接收方比对校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发送方一致, 数据不一定传输成功。 2、确认应答与序列号 序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。 确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。 序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。这也是TCP传输可靠性的保证之一。 3、超时重传 简单理解就是发送方在发送完数据后等待一个时间

OSI七层模型和五层TCP/IP协议

↘锁芯ラ 提交于 2019-11-29 00:40:23
1.查公网ip的方法: windows,打开浏览器,访问百度,搜IP即可 linux:curl ifconfig.me 2.OSI七层模型 网络工程师: 物理层 1层,通信介质的信号到数字信号(二进制0101)转换 数据链接层 2层 局域网之间计算机通信 通过mac地址(物理网卡)通信 网络层 3层 IP地址,路由(通过公网ip来访问全世界) 公网ip 具体的门牌号(唯一) 私网ip 家里的房间号(想对唯一) 传输层 4层 tcp/udp tcp(可靠,速度慢) udp(不可靠,速度快) 端口(让不同的应用程序,同时使用网络) 服务端使用的固定端口号,客户端使用随机端口号(支持多开) 开发工程师: 会话层 5层 控制发包的数据 表示层 6层 文件格式 应用层 7层 应用程序使用 对运维来说,重中之重的协议:tcp协议 3:tcp/ip协议 5层 物理层 数据链接层 网络层 传输层 应用层 一个数据包分成2部分,一个控制层面的数据,一个是应用层面的数据:控制层面只占一小部分,数据层面才占用大部分! 4:数据封装,解封装,数据传输过程 应用层--->>>数据 传输层--->>>tcp报头+数据 网络层--->>>ip包+tcp报头+数据 数据链接层--->>>数据帧+ip包+tcp报头+数据 物理层----->>>将完整的数据包,由二进制转换成电信号 最重要的协议协议: 5

动画:用动画给女朋友讲解 TCP 四次分手过程

风格不统一 提交于 2019-11-28 22:12:10
作者 | 小鹿 来源 | 公众号:小鹿动画学编程 一、写在前边 大家好,我们又见面了,做为一个业余的动画师,上次的用动画的形式讲解 TCP 三次握手过程再各大平台收到了广大读者的喜爱,说文章有趣、有货、有内容,也受到了很多读者的关注。很多读者留言说什么时候用动画讲一讲 TCP 四次挥手的过程,为了应大家的要求,今天我们就生动有趣的用动画给大家分享 TCP 四次挥手(分手)过程。 动画:用动画给面试官解释 TCP 三次握手过程 上次的三次握手动画是给面试官看的,那么今天咱们换种更加有乐趣的方式,用动画和你女(男)朋友讲解 TCP 四次分手过程,讲解完,考验一下你女(男)朋友和不和你分手呢。什么?首先你先有一个女(男)朋友,这一点小鹿早就考虑到了各大单身人士。 获取方式: 如果你没有女朋友,公众号后台回复“女朋友”,即可获取。小鹿不要脸的说,作为一个优秀的动画师,女性读者也是很多的,哈哈,公众号回复“男朋友”,小鹿会给你随机发放一个,嘿嘿,不信你试试。还等什么,把你女(男)朋友拉过来给她(他)讲吧。 二、思维导图 三、为何要进行 TCP 三次握手/四次分手? TCP 的三次握手和四次分手和你恋爱是一模一样的,从相识到相恋到分手,然后认识另一个女孩再不管重复这个过程就是数据传输在网络中不断建立起三次握手和四次分手过程。 恋爱就恋爱吧,分手就分手吧,握手握来握去,挥手挥来挥去不嫌麻烦吗?

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

徘徊边缘 提交于 2019-11-28 20:30:13
1、三次握手 (1)三次握手的详述 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生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客户进程收到B的确认后

TCP协议

懵懂的女人 提交于 2019-11-28 20:16:20
本文内容如下: 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个字节,这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接