计算机网络面试


OSI“实现”:TCP/IP

在这里插入图片描述
OSI模型注重通信协议必要的功能是什么,而TCP/IP则更强调在计算机上实现协议应该开发哪种程序

在这里插入图片描述

TCP三次握手

  • URG:紧急指针标志
  • ACK:确认序号标志
    为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段,上面的确认号是否有效就是通过该标识位控制的
  • PSH:push标志
  • RST:重置连接标志
  • SYN:同步序号,用于建立连接过程
    在连接请求中,SYN = 1 与 ACK = 0 表示该数据段没有使用捎带的确认阈,而连接应答捎带一个确认即 SYN = 1 ,ACK = 1
  • FIN:用于释放连接
    为1时表示发送方已经没有数据发送了,即关闭奔放数据流。

“握手”是为了建立连接,而连接的目的是形成虚拟电路

在这里插入图片描述
简要阐述:
在这里插入图片描述
详细阐述:
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

  • 最开始,客户端与服务器都处于CLOSED的状态。假设主动打开连接的是客户端,被动打开连接的是服务器,刚开始的时候TCP服务器进程先创建传输控制块TCB,时刻准备接收其他客户进程发送过来的连接请求,此时服务器进入LISTEN即监听状态,这时客户端也是先创建一个传输控制块TCB,然后向服务器发出连接请求报文,SYN = 1,同时选择一个初始序号seq = x,这个x可以是一个任意的正整数值,此时TCP客户端进程进入了SYN-SENT 同步已发送状态,此时发送过去的数据包即报文段会被称为SYN报文段,它是不能携带数据的,但是要消耗掉一个序号,这便是第一次握手。

  • 当服务器接收到请求报文后,如果同意连接,则发出确认报文。确认报文中包含了ACK = 1和SYN = 1,确认号就是x+1(原因是在之前的SYN报文中指定了sequence number = x,作为回应,回应跟x相关的信息,并且由于上面的报文消耗掉了一个序号,因此它就成为x+1),同时也要为自己的缓存初始化一个序列号即seq = y,此时服务器进入到了SYN-RCVD 同步收到状态,这个报文也是不能携带数据的,并且同样需要消耗一个序号,这便是第二次握手。

  • 当TCP客户进程收到确认报文之后,还要向服务器给出一个确认,确认报文的ACK = 1,小的ack = y+1(原因是因为服务器刚刚发了seq= y,同时该报文也要消耗一个序号,作为回应就给了y+1),同时先前告知了序号被+1了,因此这里seq = x+1,此时TCP连接建立,客户端就进入了ESRABLISHED已建立连接状态,而TCP规定这个报文段可以携带数据,前两个都是不可以携带的,当然它也可以不携带,如果不携带数据就不会消耗序号,这便是第三次握手。当服务器收到客户端的确认后也会进入ESRABLISHED的状态,此后双方就可以开始通信了。

为什么需要三次握手才能建立起连接

主要是为了初始化Sequence Number的初始值。通信的双方要互相通知对方自己初始化的Sequence Number,也就是x,y,这个号要作为以后数据通信的序号,以保证应用层接收到的数据不会因为网络上的传输问题而乱序,即TCP会用这个序号来拼接数据。因此,在服务器回发它的Sequence Number即第二次握手之后还需要发送确认报文给服务器,告知服务器说客户端已经收到你的初始化的Sequence Number了。

首次握手的隐患—SYN超时

如果服务器接收到了客户端发送的SYN后,回复SYN-ACK,回复后客户端就掉线了,此时服务器就没有收到客户端发送回来的ACK包的确认,那么这个链接就会处于一个中间状态,既没有成功也没有失败,于是服务器如果在一定时间内没有收到客户端的回执,那么它就会重发SYN-ACK,在Linux下默认重试次数为5次,重试的间隔时间从1秒开始,每次都翻倍,也就是1,2,4,8,16,总共31秒,在第5次发出去后还需要等待32秒才能够被判定为超时,所以共需63秒

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值