三次握手和四次挥手

问题:
1.为什么需要TCP连接?
因为TCP连接管理这套机制是以不同五元组描述的通到分别管理的。

2.什么是连接?
抽象层面来说:就是五元组标识的唯一一条通信通道
OS层面来说:就是一个Connection对象,(描述五元组信息+各种管理信息,OS通过List/Map把Connection对象组织起来)

3.Socket和连接的关系?——从应用层代码角度理解
前置知识:理解什么是Socket(套接字)
套接字是OS提供的用于应用层和网络协议栈进行通信的一套标准接口,套接字上会绑定相应的连接,实现通信

代码:ServerSocket s=new ServerSocket(8888);
做了三件事:
1.新建一个Socket
2.绑定了本地IP+本地端口
3.listen(监听)
在这里插入图片描述
连接管理
(为什么要有连接管理?)
( 因为TCP的可靠性)

需要有建立连接的过程和销毁连接的过程

1.三次握手建立TCP连接
(1)从TCP协议栈的视角看
SYN:表示想建立连接,进行信息同步(初始序号-ISN的同步)
ACK:确认应答,表示确认之前收到的segment
在这里插入图片描述
(2)TCP的状态转移
在这里插入图片描述
(3)和应用层结合看
在这里插入图片描述
总结:
1.描述三次握手的过程?
a)标志位:SYN+ACK
b)状态转移
c)SN+ASN
d)结合应用层

2.为什么是三次?
a)为什么不是两次?
c发SYN,s回ACK,s发SYN,c回ACK,两次的话不满足确认应答机制。
b)为什么不是四次?
因为s发ACK和s回ACK可以合并,能少次数尽量少,提高效率。

3.建立连接的目的是什么?
a)为什么要有连接?
因为TCP连接管理机制是以不同五元组描述的通道分别管理的。
b)什么是连接?
抽象层面来说:就是五元组标识的唯一一条通信通道
OS层面来说:就是一个Connection对象,(描述五元组信息+各种管理信息,OS通过List/Map把Connection对象组织起来)

c)建立连接是为了同步ISN
d)为什么ISN序列号必须是随机的?如果ISN都是0,是不是就不需要同步了?
如果ISN都是固定的,可能会被伪造的segment进行攻击,要防止网络上的恶意用户。

2.四次挥手释放连接
A结点和B结点(没有客户端和服务器之说)
(1)主动关闭方、被动关闭方、同时关闭方
在这里插入图片描述
在这里插入图片描述
合并被动关闭方的FIN+ACK,就变成了三次挥手。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值