• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
长发不及肩
博客园    首页    新随笔    联系   管理    订阅  订阅
乱七八糟的面试准备——tcp/ip

TCP/IP: Transmission Control Protocol / Internet Protocol

内部包含的通信协议有TCP传输控制协议(应用程序之间的协议);UDP用户数据报协议(应用程序之间的简单协议);IP网际协议(计算机之间的协议);ICMP因特网消息控制协议(针对错误和状态);DHCP动态主机配置协议(动态寻址)

本文记录传输层TCP协议面试要点

tcp传输消息前需要建立连接,传输完成后释放连接。

三次握手;四次分手;TCP vs UDP;TCP如何保证可靠性;

三次握手过程:

 

 第一次是主机发送建立连接消息给服务器,服务器表示发现这个请求建立连接的消息,第二次是服务器发送我可以连接的消息给主机,第三次是主机发送正式确认连接给服务器。接下来就可以发送数据了

具体过程文字描述如下图

 

 四次分手:

 

 主机发送释放连接消息到服务器;服务器收到后进入半关闭状态,但是还继续接收客户端发来的数据包(防止网络拥塞之类的导致数据包发的慢??),服务器发送收到主机提出的释放连接的确认消息到主机;主机收到后也变为半关闭状态,对服务器后续发来的数据包依然会接受;服务器继续发送释放连接消息表示最后一个消息发完了,我要下线了;主机发送确认消息表示我知道了,拜拜。

这里,服务器收到主机的确认消息后立即下线,主机发送完需要等待一个最长数据包来回的时间(2SML时间),防止1、服务器没收到我的确认包,服务器如果没收到会再次发来释放连接消息。2、这个时间保证了端到端的链路上没有报文段了,担心收到的服务器发来的消息是一个失效连接

 

 

为什么建立连接是三次握手,关闭连接确是四次挥手呢?

建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。 
而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。

TCP如何保证可靠性?
• 数据包校验
• 超时重传机制
• 应答机制
• 对失序数据包重排序
• TCP还能提供流量控制

TCP与UDP区别?

https://blog.csdn.net/li_ning_/article/details/52117463

1.基于连接与无连接
  2.TCP要求系统资源较多,UDP较少; 
  3.UDP程序结构较简单 
  4.流模式(TCP)与数据报模式(UDP); 

 UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
7.TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保   证可靠交付  

posted on 2020-08-01 01:12  长发不及肩  阅读(146)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3