tcp四次挥手

【网络】TCP的三次握手与四次挥手以及面试相关的问题

邮差的信 提交于 2019-11-27 12:35:42
一、TCP的三次握手与四次挥手 1、三次握手 定义: 指建立一个TCP连接时,需要客户端和服务器总共发送3个包。建立连接的过程为三次握手 目的: 连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP窗口大小信息。 可能触发三次握手的情况: 在socket编程中,客户端执行connect()时,将触发三次握手。 三次握手的作用: ①使得通讯双方都做好通讯准备; ②告诉对端本端通讯所选用的报文标识号; ③防止已失效的连接请求报文段又突然传递到了服务器,从而产生错误。 三次握手的过程: 2、四次挥手 关闭连接的过程为四次挥手,由于TCP的全双工的通讯,所以每个方向都必须单独进行关闭。 四次挥手的过程: 当一方完成他的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能继续发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。 问题: 1、三次握手,每一次都携带什么数据?为什么要给确认报文段中的ACK的值+1? seq是数据包本身的序列号;ack是期望对方继续发送的那个数据包的序列号。 2、为什么是三次握手?两次可以么?四次呢? 显然是不可以的。 ① 客户端发送SYN包A1,由于网络链路问题,到达时间滞后,因为客户端迟迟收不到服务器的响应,以为丢包,清理A1

第八章.网络编程

梦想与她 提交于 2019-11-27 12:09:53
第八章 网络编程 两个运行中的程序如何传递信息? 通过文件 两台机器上的两个运行程序如何通信? 通过网络 8.1 网络应用开发架构 8.1.1C/S结构 全称 client / server 客户端 / 服务端 [C/S架构是第一种比较早的软件架构,主要用于局域网内。也叫 客户机/服务器模式。C/S架构软件有一个特点,就是如果用户要使用的话, 需要下载一个客户端,安装后就可以使用 。比如QQ,OFFICE软件等。 [ 它可以分为 客户机和服务器两层 : 第一层: 在客户机系统上结合了界面显示与业务逻辑(即用户表示层) 第二层: 通过网络结合了数据库服务器(数据库层)。   这里需要补充的是,客户端不仅仅是一些简单的操作,它也是会处理一些运算,业务逻辑的处理等。也就是说,客户端也做着一些本该由服务器来做的一些事情. C/S架构的优点: 1 C/S架构的界面和操作可以很丰富。(客户端操作界面可以随意排列,满足客户的需要) 2 安全性能可以很容易保证。(因为只有两层的传输,而不是中间有很多层。 3 由于只有一层交互,因此响应速度较快。(直接相连,中间没有什么阻隔或岔路,比如QQ,每天那么多人在线,也不觉得慢) C/S架构的缺点: 可以将QQ作为类比: 1 适用面窄,通常用于局域网中。 2 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。 3 维护成本高,发生一次升级

计算机网络

风流意气都作罢 提交于 2019-11-27 09:54:39
计算机网络 五层架构 中和Osi和TCP/IP的优点,采用一种只有五层协议体系结构,自上而下分别是: 应用层 :提供应用接口,为用户直接提供各种网络服务。 ​ 常见协议有:域名系统DNS,支持万维网的http协议,支持电子邮件的SMTP协议 http协议 底层协议为tcp TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 TCP是底层通讯协议,定义的是数据传输和连接方式的规范 HTTP是应用层协议,定义的是传输数据的内容的规范 http协议与tcp协议相互关系 ​ http是应用层,而tcp是传输层,http是基于tcp连接基础之上的。简而言之,tcp是单纯建立连接,不涉及请求的数据以及简单传输,而http是用来收发数据的。 1.客户端发送http请求给服务端,请求包括请求头,请求内容 ​ 请求头包含:1.请求方法get/post,请求url,http版本 2.请求的数据 ​ 3.是否有cookies以及缓存 ​ 请求体:即请求的内容 2.服务端收到http请求,返回http响应 ​ 响应头包含:cookies或sessions,状态码,内容大小等 3.客户端收到以后,由浏览器完成对数据的渲染,包括执行js脚本 ​ 传输层: 定义传输数据的协议端口号,以及流控和差错校验。 四层交换机 协议有 : TCP UDP ,数据包一旦离开网卡即进入网络传输层

OSI七层模型

感情迁移 提交于 2019-11-27 08:36:44
网络编程初识 C/S B/S架构 C/S B/S架构 C: client端 B: browse 浏览器 S: server端 C/S架构: 基于客户端与服务端之间的通信 ​ QQ, 游戏,皮皮虾, 快手,抖音. ​ 优点: 个性化设置,响应速度快, ​ 缺点: 开发成本,维护成本高,占用空间,用户固定. B/S架构: 基于浏览器与服务端之间的通信 ​ 谷歌浏览器,360浏览器,火狐浏览器等等. ​ 优点: 开发维护成本低,占用空间相对低,用户不固定. ​ 缺点: 功能单一,没有个性化设置,响应速度相对慢一些. 网络通信原理 80年代,固定电话联系,(还没有推广普通话) 两台电话之间一堆物理连接介质连接. 拨号,锁定对方电话的位置. 由于当时没有统一普通话,所以你如果和河南,山西,广西,福建等朋友进行友好的沟通交流,你必须学当地的方言. 推广普通话,统一交流方式. 两台电话之间一堆物理连接介质连接. 拨号,锁定对方电话的位置. 统一交流方式. 全球范围内交流: 两台电话之间一堆物理连接介质连接. 拨号,锁定对方电话的位置. 统一交流方式.(英语) 话题转回互联网通信: ​ 我现在想和美国的一个girl联系.你如何利用计算机联系??? 两台计算机要有一堆物理连接介质连接. 找到对方计算机软件位置. 遵循一揽子互联网通信协议. osi七层协议 osi七层协议 应用层 表示层 会话层

tcp和udp

ⅰ亾dé卋堺 提交于 2019-11-27 05:42:44
tcp的优点:可靠,提体现在tcp在传递数据之前会有三次握手来建立连接,而且在传输数据时,有确认,窗口,重传,拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源,采用四次挥手断开连接。 tcp的缺点:慢,效率低,占用系统资源高,易被攻击tcp在传递数据之前,要先建立连接,这会消耗时间。 UDP的优点:快,比tcp稍安全udp没有tcp的握手,确认,窗口,重传,拥塞控制等机制,udp是一种无状态的传输协议,所以他在传递数据时非常快。 UDP的缺点:不可靠,不稳定,在数据传递时吐过网络质量不好,就会很容易丢包。 来源: https://www.cnblogs.com/xp0813/p/11347977.html

TCP为什么要三次握手?

蹲街弑〆低调 提交于 2019-11-27 05:27:18
在《计算机网络》一书中其中有提到,三次握手的目的是“为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误”,这种情况是: 一端(client)A发出去的第一个连接请求报文并没有丢失,而是因为某些未知的原因在某个网络节点上发生滞留,导致延迟到连接释放以后的某个时间才到达另一端(server)B。本来这是一个早已失效的报文段,但是B收到此失效的报文之后,会误认为是A再次发出的一个新的连接请求,于是B端就向A又发出确认报文,表示同意建立连接。如果不采用“三次握手”,那么只要B端发出确认报文就会认为新的连接已经建立了,但是A端并没有发出建立连接的请求,因此不会去向B端发送数据,B端没有收到数据就会一直等待,这样B端就会白白浪费掉很多资源。如果采用“三次握手”的话就不会出现这种情况,B端收到一个过时失效的报文段之后,向A端发出确认,此时A并没有要求建立连接,所以就不会向B端发送确认,这个时候B端也能够知道连接没有建立。 问题的本质是,信道是不可靠的,但是我们要建立可靠的连接发送可靠的数据,也就是数据传输是需要可靠的。在这个时候三次握手是一个理论上的最小值,并不是说是tcp协议要求的,而是为了满足在不可靠的信道上传输可靠的数据所要求的。 TCP建立连接三次握手过程: 第一次握手:建立连接时, 客户端发送 syn包(syn=j)到 服务器,并进入 SYN_SENT状态,等待服务器确认

js随笔

血红的双手。 提交于 2019-11-27 04:49:12
参考链接: https://juejin.im/post/5d23e750f265da1b855c7bbe https://github.com/ly2011/blog/issues/153 7 ES5/ES6 的继承除了写法以外还有什么区别 class Super {} class Sub extends Super {} const sub = new Sub(); Sub.__proto__ === Super; 子类可以直接通过 proto 寻址到父类。 function Super() {} function Sub() {} Sub.prototype = new Super(); Sub.prototype.constructor = Sub; var sub = new Sub(); Sub.__proto__ === Function.prototype; 而通过 ES5 的方式,Sub.__proto__ === Function.prototype 相关问题 : js的继承问题 // 寄生组合式继承 // 通过借用构造函数来继承属性, 通过原型链来继承方法 // 不必为了指定子类型的原型而调用父类型的构造函数,我们只需要父类型的一个副本而已 // 本质上就是使用寄生式继承来继承超类型的原型, 然后再讲结果指定给子类型的原型 function object(o)

TCP协议

拥有回忆 提交于 2019-11-27 03:59:49
一、TCP报头 二、连接管理机制 三次握手 1、TCP服务器进程先创建传输控制块TCB,此时服务器就进入了 LISTEN(监听)状态 2、TCP客户端进程也是先创建传输控制块TCB, 然后向服务器发出连接请求报文,此时报文首部中的同步标志位SYN=1, 同时选择一个初始序列号 seq = x, 此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。 3、TCP服务器收到请求报文后, 如果同意连接, 则发出确认报文。确认报文中的 ACK=1, SYN=1, 确认序号是 x+1, 同时也要为自己初始化一个序列号 seq = y, 此时, TCP服务器进程进入了SYN-RCVD(同步收到)状态。 4、TCP客户端进程收到确认后还, 要向服务器给出确认。确认报文的ACK=1,确认序号是 y+1,自己的序列号是 x+1. 5、此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。 四次挥手 1、客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u,此时客户端进入FIN-WAIT-1(终止等待1)状态。 2、服务器收到连接释放报文,发出确认报文,ACK=1,确认序号为 u+1,并且带上自己的序列号seq=v

可靠的TCP连接为何是三次握手和四次挥手

我们两清 提交于 2019-11-27 03:26:31
首先,咱们先来熟悉下经典的tcp/ip模型。 tcp/ip 模型为了方便使用,将osi七层模型划分成了四层,分别为网络接口层,网络层,传输层,应用层。 他们作用分别为: 1)网络接口层:主要作用是将ip地址和计算机的物理地址互相绑定,并实现二进制流和计算机硬件的高低电位的转换。 2)网络层:主要作用是通过ip地址将两台物理机链接起来,实现ip数据包的传输; 3)传输层:使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。; 4)应用层:负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP、FTP等。 今天咱们主要来看下tcp模型中主要的tcp协议。 计算机通信中,要想实现可靠的网络通信,tcp协议是必不可少的一环。那么tcp协议是如何实现可靠通信的呢?这就首先要从经典的三次握手谈起。 三次握手即客户端与服务器至少(网络超时的话会多于三个)要发送三个数据包来建立tcp连接。 第一次握手:客户端发送建立连接数据包,发送之后状态变成SYN_SENT,数据包内容里面SYN标志位为1以及一个随机的序列号seq,假设值为j。 第二次握手:服务器收到请求之后,发送数据包给客户端

【网络编程】

不羁岁月 提交于 2019-11-27 02:49:34
原文: http://106.13.73.98/__/1/ 目录 1.socket层 2.理解socket 3.套接字的发展史 4.网络基础 5.socket基本操作 6.socket进阶 7.黏包 8.解决黏包 8.socket的更多方法 1.socket层 ![在这里插入图片描述](http://106.13.73.98/media/ai/2019-03/5ccf086a-baa7-4268-a9f9-a50fb74136b7.png) 2.理解socket socket是应用层与TCP/IP协议族的中间软件抽象层,它是一组接口。在设计模式中,socket其实就是一个面膜,它把复杂的TCP/IP协议族隐藏在socket接口后面,对于用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。 3.套接字的发展史 套接字起源于20世纪70年代 加利福尼亚 大学伯克利分校版本的Unix,即人们所说的BSD Unix。因此,有时人们也把套接字称为“伯克利套接字”或“BSD套接字”。一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯,这也被称为进程间通讯或IPC。套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。 基于文件类型的套接字家族:AF_UNIX unix下一切皆文件,基于文件的套接字调用的就是底层的文件系统来获取数据