关于面试时问到的tcp问题的综合描述

请你描述下三次握手的过程:
1.首先我们从三次握手的目的出发----其目的就是为了建立连接
从tcp特有的特点来回答:
1。tcp时可靠交付的服务,通过连接传送数据,在这个过程中连接就相当于运输货物的通道(货物特指需要我们传输的数据),在运输过程中我们必须保证所有传输的数据尽可能的到达目的地。因此我们要建立连接。这个通道还可以在对方接受到了之后对接收到的包进行顺序排列。
2.要有建立连接的这个步骤使得初始信息同步,在建立连接之后双方交换自己的信息,使得信息同步到我们需要填写数据的地方。
3.tcp是确认应答机制的
对于为什么要建立三次连接的问题我在另一篇博客中有详细解说这里我把连接放出来供大家参考链接: https://blog.csdn.net/qq_45169404/article/details/107349671
4.建立连接过程中的状态有什么用

在这里插入图片描述可以看到刚开始没有建立连接之前客户端和服务端都是CLOSED状态,在服务端建立玩sockte对象之后就从CLOSED状态转换为LISTEN状态,当客户端请求建立连接之后,发送来SN(随机数)ack=0,SYN= 1,在发送完请求连接之后,客户端的状态变为SYN-SENT ,而在在服务端收到之后就从监听状态转变为SYN-RCVD。
之后服务端收到请求之后往客户端发送回复,此时的SN=Y(随机数),SYN = 1,ack =1,ASN=X+1(消耗一个序列号),发送完回复之后等待客户端的响应,客户端在一段时间之后收到了来自客户端的请求建立连接,就发送一个我收到了你发送给我的一个确认信息并把自己的状态置为ESAB-LISEHED,服务器收到客户端的ack之后也把自己的状态置为ESAB-LISEHED。至此三次握手全部结束。
(另外附加一个三次握手的状态解释的语句,希望大家能更好的理解三次握手的状态变化:
LINSTEN:侦听来自远方的tcp端口的连接请求
SYN-SENT:在发送连接请求后等待匹配的连接请求(客户端)
SYN-RECEIVED:在收到和发送一个连接请求后等待对方对连接请求的确认
(服务端)
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程tcp连接中断请求,或者先前连接中断请求的确认
FIN-WAIT-2:从远程tcp等待连接中断请求,或者先前的连接中断请求的确认
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程tcp对连接终端的确认
LAST-ACK:等待原来的发向远程tcp的连接中断请求的确认
TIME-WAIT:等待足够的时间确保远程tcp接收到连接中断请求的确认
CLOSED:没有任何连接状态
主动端可能出现的状态:FIN-WAIT1,FIN-WAIT2,TIME-WAIT.CLOSING(指的是
在客户端发送完关闭请求后服务端也发送来了关闭请求,而不是先发来了客户端的请求关闭的回复)
被动端可能出现的状态:CLOSE-WAIT,LAST-ACK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值