三次握手

面试官,求求你,别再问我网络分层了!!!

不打扰是莪最后的温柔 提交于 2020-03-17 03:25:17
上一篇大体给小伙伴介绍一下网络分层的基本概念,以及每层的大体的功能,那么今天我们来看看每层具体的功能是什么?层与层之间又是怎么进行封装关联的? 上一篇: 面试:你真的懂网络分层模型吗?(上) 写在前边 上一篇主要分享了网络分层的基本概念,为什么要进行网络分层?又是如何进行分层?每一层的基本功能是什么?而且对于每一层的的功能细节方面,比如数据包的组成以及每层包含的一些协议的使用都没有细说,那么这一篇文章将会分享网络分层每层中协议等深入讲解。(PS:可能里边有的讲解不正确,还请大佬指出改正) 1、物理层 物理层里边涉及到最多的是硬件底层的一些内容,没有需要过多了解的内容,我们直接看数据链路层。 2、数据链路层 上回讲到数据链路层中规定的“以太网协议”来规定电信号的分组形式,什么是以太网,以太网的数据包是什么样子的? 2.1 以太网协议 以太网规定,每组的电信号就是一个数据包,每个数据包我们可以成为“帧”。每帧的组成是由标头(Head)和数据(Data)组成。 那么你会问,标头里有什么信息?Data 数据又会存放写什么?为什么分为两部分?放在一块不好吗? 1、标头 为什么传输数据会有标头,我们想呀,在传输数据的时候,接收端怎么判断是不是给自己发送的,那么就只取出标头来进行判断。 数据包的标头中通常会存放一些有关数据包的说明、发送者是谁、接受者又是谁等相关识别信息。 标头的长度固定为 18

TCP/IP协议分析

你说的曾经没有我的故事 提交于 2020-03-17 02:11:22
文章目录 TCP/IP参考模型 应用层 主机到主机层 因特网层 利用TCP/IP参考模型分析数据传输过程 可靠的TCP TCP概述 TCP报文结构 主机到主机层 TCP三次握手 TCP四次挥手 滑动窗口机制 停止等待协议 拥塞控制 冒险的UDP UDP概述 UDP报文结构 TCP/IP参考模型 应用层 HTTP 80 超文本传输协议,提供浏览网页服务 Telnet 23 远程登陆协议,提供远程管理服务 FTP 20、21 文件传输协议,剔红互联网文件资源共享服务 SMTP 25 简单邮件传输协议,提供互联网电子邮件服务 POP3 110 邮局协议,提供互联网电子邮件服务 TFTP 69(UDP)简单文件传输协议,提供简单的文件传输服务 主机到主机层 TCP UDP TCP与UDP的对比 传输控制协议(TCP) 用户数据报协议(UDP) 面向字节流 面向报文 面向链接 无连接 可靠传输 尽力而为的传输 支持流控及窗口机制 无流控及窗口机制 HTTP、FTP等 TFTP、DNS、DHCP等 因特网层 负责将ip报文从源端发送到目的端 定义逻辑地址(IP地址) 负责数据包的寻径和转发 IP包 首部长度一般为20-60字节(Byte),其中后40字节是可选的,长度不固定,前20字节格式为固定。数据负载部分的长度一般可变,整个IP数据包的最大长度为65535B。 利用TCP

WebSocket 和HTTP的区别及原理

冷暖自知 提交于 2020-03-15 13:15:25
有时候还会有老铁在考虑在什么样的环境下使用WebSocket,什么样的环境下使用HTTP,今天我们来说下WebSocket和HTTP。 WebSocket和HTTP的区别 http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要有三次握手才能发送信息。 http链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息。即每一个request对应一个response。长链接是在一定的期限内保持链接。保持TCP连接不断开。客户端与服务器通信,必须要有客户端发起然后服务器返回结果。客户端是主动的,服务器是被动的。 WebSocket他是为了解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮训问题而生的,他实现了多路复用,他是全双工通信。在webSocket协议下客服端和浏览器可以同时发送信息。 建立了WenSocket之后服务器不必在浏览器发送request请求之后才能发送信息到浏览器。这时的服务器已有主动权想什么时候发就可以发送信息到服务器。而且信息当中不必在带有head的部分信息了与http的长链接通信来说,这种方式,不仅能降低服务器的压力。而且信息当中也减少了部分多余的信息。 HTTP的长连接与websocket的持久连接 HTTP1.1的连接默认使用长连接(persistent connection),

TCP的三次握手和四次挥手

无人久伴 提交于 2020-03-15 12:59:18
今天去面试围绕RPC组件这一块被询问到了TCP的连接机制,脑子仅存在大学里的一点记忆,于是回来整理一番,先看个例子 三次握手: A:“喂,你听得到吗?”A->SYN_SEND B:“我听得到呀,你听得到我吗?”应答与请求同时发出 B->SYN_RCVD | A->ESTABLISHED A:“我能听到你,今天balabala……”B->ESTABLISHED 四次挥手: A:“喂,我不说了。”A->FIN_WAIT1 B:“我知道了。等下,上一句还没说完。Balabala…..”B->CLOSE_WAIT | A->FIN_WAIT2 B:”好了,说完了,我也不说了。”B->LAST_ACK A:”我知道了。”A->TIME_WAIT | B->CLOSED A等待2MSL,保证B收到了消息,否则重说一次”我知道了”,A->CLOSED 设主机B运行一个服务器进程,它先发出一个被动打开命令,告诉它的TCP要准备接收客户进程的连续请求,然后服务进程就处于听的状态。不断检测是否有客户进程发起连续请求,如有,作出响应。设客户进程运行在主机A中,他先向自己的TCP发出主动打开的命令,表明要向某个IP地址的某个端口建立运输连接,过程如下: 1)主机A的TCP向主机B的TCP发出连接请求报文段,其首部中的同步比特SYN应置1,同时选择一个序号x,表明在后面传送数据时的第一个数据字节的序号是x。

长连接和短链接的区别

折月煮酒 提交于 2020-03-14 03:29:09
TCP/IP TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。 在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议 UDP包括DNS、TFTP等协议 短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。 长连接 连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。 http的长连接 HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP 1.1默认进行持久连接。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。 什么时候用长连接,短连接? 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开

linux-7week

坚强是说给别人听的谎言 提交于 2020-03-14 00:37:35
1、osi七层模型和TCP/IP五层模型 应用层:为应用软件提供服务。 表示层;用于处理两个通信系统中交换信息的表示方式,主要有数据格式交换,数据加密数据解秘,数据压缩等。 会话层:维护两个计算机之间的传输链接,保证点到点传输不中断,以及管理数据交换等。 传输层:确保数据传输的可靠性,通过端口号来区分上层应用程序;传输的是数据段 --TCP UDP 网路层:数据传输, 数据包,逻辑地址/IP地址 --路由器 ;协议-IP ICMP IGMP ARP RARP 数据链路层:数据帧、MAC地址/物理地址, --交换机 物理层:二进制数据传输,比特流;--网卡 2、总结描述TCP三次握手四次挥手 TCP的三次握手: 在A机向B机发送数据交互时,建立SYN数据连接请求 ,数据包seq=x,发送给B机当B机收到数据后会回复给A机,同样也会发送SYN数据建立报文,B机给A机的数据包为seq=y,同样也要回复给A机的确认报文ACK=x+1,表明此数据我以收到,当A机再次收到B机确认的数据后,回复确认报文ACK=y+1,同样也会封装自己的数据包x+1告诉B机可以进行数据交互。 TCP的四次断开: 在A机向B机请求断开连接时,会发送FIN断开连接请求,封装一个数据包seq=x,发送给B,当B机收到A记得断开请求数据时,同样也会回复给A机ack确认报文数据包会表示为seq=x+1

linux-7week

末鹿安然 提交于 2020-03-14 00:32:45
1、osi七层模型和TCP/IP五层模型 应用层:为应用软件提供服务。 表示层;用于处理两个通信系统中交换信息的表示方式,主要有数据格式交换,数据加密数据解秘,数据压缩等。 会话层:维护两个计算机之间的传输链接,保证点到点传输不中断,以及管理数据交换等。 传输层:确保数据传输的可靠性,通过端口号来区分上层应用程序;传输的是数据段 --TCP UDP 网路层:数据传输, 数据包,逻辑地址/IP地址 --路由器 ;协议-IP ICMP IGMP ARP RARP 数据链路层:数据帧、MAC地址/物理地址, --交换机 物理层:二进制数据传输,比特流;--网卡 2、总结描述TCP三次握手四次挥手 TCP的三次握手: 在A机向B机发送数据交互时,建立SYN数据连接请求 ,数据包seq=x,发送给B机当B机收到数据后会回复给A机,同样也会发送SYN数据建立报文,B机给A机的数据包为seq=y,同样也要回复给A机的确认报文ACK=x+1,表明此数据我以收到,当A机再次收到B机确认的数据后,回复确认报文ACK=y+1,同样也会封装自己的数据包x+1告诉B机可以进行数据交互。 TCP的四次断开: 在A机向B机请求断开连接时,会发送FIN断开连接请求,封装一个数据包seq=x,发送给B,当B机收到A记得断开请求数据时,同样也会回复给A机ack确认报文数据包会表示为seq=x+1

第八周LINUX学习笔记

强颜欢笑 提交于 2020-03-13 03:28:14
                                    vsftpd丶NFS丶SAMBA nfs基于rpc samba基于cifs(smb) DRBD: ftp:File Transfer protocol 文件传输协议 两个连接: tcp:命令连接 tcp:数据连接 在被动模式下数据传输端口是随机的除非自己指定 主动模式:服务器端通过20端口主动连接客户端, 被动模式:客户端使用自己与服务器端建立连接。 默认情况下FTP协议使用TCP端口中的 20和21这两个端口其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。 防火墙上连接追踪 数据要流式化 文本:文件流 二进制 c/s Server: wu-ftpd(华盛顿大学的fdtp) proftpd pureftp vsftpd Very Secure ftpd iis ServU Client: GUI windows flashfxp cuteftp filezilla(开源) linux gftp CLI ftp lftp wget lftpget 用户认证: 系统用户 虚拟用户 hash file mysql 匿名用户 数据传输安全 sftp

TCP UDP面试题

早过忘川 提交于 2020-03-12 13:42:35
1.TCP/IP四层模型 # 1.网络接口层(物理层,数据链路层) # 2.网络层 # 3.传输层 # 4.应用层(会话层,表示层,应用层) 2.TCP与UDP区别 # TCP:面向连接,可靠的,速度慢,效率低 # UDP:无连接,不可靠,速度快,效率低 3.TCP/UDP应用 # TCP对通信质量有要求的,例如HTTP,HTTPS协议 # UDP不需要一对一沟通,建立连接的,可以做到一对多,如广播,直播需要处理速度快的,能容忍丢包的 4.三次握手四次挥手 # 三次握手# 1.客户端发送一个带SYN标志的TCP报文到服务器端,并进入SYN_SEND状态,等待服务端确认 # 2.服务端收到客户端的报文并返回一个同时带ACK标志和SYN报纸的报文,进入SYN_RECV状态。表示确认刚才客户端的报文,同时询问客户端是否准备好通讯 # 3.客户端再次回应服务端一个ACK报文,双方进入ESTABILISHED状态 # 四次挥手 # 1.TCP客户端发送一个FIN,用来关闭客户端到服务端的数据传送 # 2.服务端收到这个FIN,它发挥一个ACK,确认序号为收到的序号加一 # 3.服务端关闭客户端的连接,发送一个FIN给客户端 # 4.客户端发回ACK报文确认,并将确认序号设置为收到序号加一 5.为什么连接的时候是三次握手,关闭的时候是四次挥手? # 因为服务端收到客户端的SYN连接请求报文后

TCP如何实现可靠传输

瘦欲@ 提交于 2020-03-12 08:51:38
1.TCP 和 UDP的区别: (1)TCP面向连接;UDP无连接 (2)TCP保证数据的可靠传输,数据传送无差错,不丢失,无重复,按序到达;UDP不保证可靠交付 (3)TCP连接一对一;UDP支持更广泛 (4)UDP实时性好,效率高,适用场景:短消息传输,大量客户端,对数据安全性要求不高但实时性要求高 (5)TCP面向数据流;UDP面向数据报 2.TCP如何保证数据传输的可靠性? 1. 序列号 ,ACK信号:发送方按照顺序给要发送的数据包的每个字节都标上编号。接收方接收到发送方的数据包之后,回传一个ACK信号,标识下一个需求的数据包初始字节编号。 2. 超时重发 :在等待接收方回传的ACK信号超时后,发送方重发数据包。一旦开始重传,下一次等待的时间间隔指数增长,重发一定次数后还是收不到ACK信号,将强制终止连接。 3. TCP的连接管理 :建立连接的三次握手和断开连接的四次挥手。 4. 以段为单位发送数据包 :在建立TCP连接的同时,两端协商发送数据包的单位,称为“最大消息长度”:MSS。 【TCP数据(MSS字节)】【TCP首部(20字节)】【IP首部(20字节)】 5. 滑动窗口 :以段为单位发送数据包,每发送一个数据包需要等待一个ACK信号,当数据包往返时间越长效率越低。滑动窗口中窗口前端为已发送但为收到ACK的数据,后端为待发送数据。发送端一次发送多个数据