第三次握手服务器发送信息,TCP三次握手、四次挥手的理解及面试题(图解过程)...

TCP三次握手、四次挥手的理解及面试题(图解过程)

TCP 和 UDP是网络协议的传输层上的两种不一样的协议。TCP的特色是面向链接的、可靠的字节流服务。客户端须要和服务器之间创建一个TCP链接,以后才能传输数据。数据到达以前对方就一直在等待,除非对方直接关闭链接,数据有序,先发先到。UDP是一种无链接、不可靠的数据发送协议。发送方根据对方的ip地址发送数据包,可是不保证接收发接包的质量,数据无序还容易丢包。虽然UDP协议不稳定可是在即时通信(QQ聊天、在线视频、网络语音电话)的场景下,能够容许偶尔的断续,可是这种协议速度快。面试

TCP、UDP的报文结构服务器

UDP的报文结构                                                                             TCP的报文结构.net

a98328b87f4c48d3b44670f231eaa59a.png                       

a98328b87f4c48d3b44670f231eaa59a.png

TCP协议三次握手、四次挥手、超时重传视频

a98328b87f4c48d3b44670f231eaa59a.png

三次握手是指创建TCP链接协议时,须要在客户端和服务器之间发送三个包,握手过程当中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。接口

第一次握手:客户端发送第一个包,其中SYN标志位为1, ACK=0,发送顺序号sequence=X(随机int)。客户端进入SYN发送状态,等待服务器确认。图片

a98328b87f4c48d3b44670f231eaa59a.png

第二次握手:服务器收到这个包后发送第二个包,其中包SYN、ACK标志位为1,发送顺序号seq=Y(随机int),接收顺序号ACK=X+1,此时服务器进入SYN接收状态。ip

第三次握手:客户端收到服务器传来的包后,向服务器发送第三个包,SYN=0, ACK=1,接收顺序号ACK = Y+1,发送顺序号seq=X+1。此包发送完毕,客户端和服务器进入ESTABLISHED创建成功状态,完成三次握手。资源

a98328b87f4c48d3b44670f231eaa59a.png

四次握手是指终止TCP链接协议时,须要在客户端和服务器之间发送四个包

第一次挥手:主动关闭方发送第一个包,其中FIN标志位为1,发送顺序号seq为X。

第二次挥手:被动关闭方收到FIN包后发送第二个包,其中发送顺序号seq为Z,接收顺序号ack为X+1。

第三次挥手:被动关闭方再发送第三个包,其中FIN标志位为1,发送顺序号seq为Y,接收顺序号ack为X。

第四次挥手:主动关闭方发送第四个包,其中发送顺序号为X,接收顺序号为Y。至此,完成四次挥手。

超时重传指的是,发送数据包在必定的时间周期内没有收到相应的ACK,等待必定的时间,超时以后就认为这个数据包丢失,就会从新发送。这个等待时间被称为RTO.

深刻讨论:

一、为何创建链接协议是三次握手,而关闭链接倒是四次握手呢?

创建链接时,ACK和SYN能够放在一个报文里来发送。而关闭链接时,被动关闭方可能还须要发送一些数据后,再发送FIN报文表示赞成如今能够关闭链接了,因此它这里的ACK报文和FIN报文多数状况下都是分开发送的。

二、为何TIME_WAIT状态还须要等2MSL后才能返回到CLOSED状态?

两个存在的理由:一、没法保证最后发送的ACK报文会必定被对方收到,因此须要重发可能丢失的ACK报文。二、关闭连接一段时间后可能会在相同的IP地址和端口创建新的链接,为了防止旧链接的重复分组在新链接已经终止后再现。2MSL足以让分组最多存活msl秒被丢弃。

三、为何必须是三次握手,不能用两次握手进行链接?

记住服务器的资源宝贵不能浪费!  若是在断开链接后,第一次握手请求链接的包才到会使服务器打开链接,占用资源并且容易被恶意攻击!防止攻击的方法,缩短服务器等待时间。两次握手容易死锁。若是服务器的应答分组在传输中丢失,将不知道S创建什么样的序列号,C认为链接还未创建成功,将忽略S发来的任何数据分组,只等待链接确认应答分组。而S在发出的分组超时后,重复发送一样的分组。这样就造成了死锁。

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

a98328b87f4c48d3b44670f231eaa59a.png

TCP/IP五层模型

应用层:  提供给客户端访问服务器网络服务的接口 。经常使用协议:HTTP、SMTP、FTP、ping、telnet、DNS、DHCP等

传输层:数据传输协议TCP 或 UDP

网络层 : 负责对数据包进行路由选择和存储转发,负责为分组交换网上的不一样主机提供通讯服务。在发送数据时,网络层把运输层产生的报文段和用户数据报封装成分组(IP数据报)或包进行传送。

IP协议:逐跳发送模式;根据数据包的目的地IP地址决定数据如何发送;若是数据包不能直接发送至目的地,IP协议负责寻找一个合适的下一跳路由器,并将数据包交付给该路由器转发

ICMP协议:因特网控制报文协议,用于检测网络链接

数据链路层: 负责分配MAC地址经常使用协议:地址解析协议(ARP)和反地址解析协议(RARP),实现IP地址与机器物理地址(MAC地址)之间的转换两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻的链路上传送帧(frame)。每一帧包括数据和必要的控制信息。网卡接口的网络驱动程序,处理数据在物理媒介上的传输;不一样的物理网络具备电气特性,网络驱动程序隐藏实现细节,为上层协议提供一致接口

物理层:所传数据单位是比特(bit)。物理层要考虑用多大的电压表明1 或 0 ,以及接受方如何识别发送方所发送的比特。

各网络层对应的工做设备: 物理层:中继器、集线器 数据链路层:网桥或交换机 网络层中继系统:路由器 网络层以上的中继系统:网关

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值