笔记:TCP/IP与网络模型

网络模型

网络模型.jpg
TCP的特性:

1.面向连接
2.全双工允许双端同时收发数据
3.有超时重传机制(RTO,Retransmission TimeOut)与动态计算往返时延(RTT)
4.滑动窗口控制双端每次的发送和接收大小,进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
多说无益,直接看图吧
5.面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

  • MAC地址:物理上存在 说白点直接烧在硬件上
  • IP地址:逻辑上存在 实际物理上不存在
    关于ip分段的借用下这个大哥文章:https://blog.csdn.net/ericzhangyuncsdn/article/details/86479155

TCP的三次握手与四次分手

先看图:


TCP.jpg
FAQ:
  • 为什么TCP握手是三次 不是两次也不是四次:
    答:TCP连接的建立是全双工的是可靠的。需要确定对方传输的seq(序列号)来确定传输中途是否有丢包,以确定是否需要出发。
    第一次我说是发起方发送序列号给到对端
    对端确定发起方的起始序列号后+1发起第二次握手回复ack给发起方并传递自己的seq给到发起方。
    三次过后刚好确定双方的起始序列号 因此三次刚好 2次 不能确定发起方确定对端知道自己的起始序列号; 四次又过多。
    发起方接到对端的起始序列号+1 第三次握手 回复ack给到对端。
  • 为什么分手需要TIME_WAITING状态
    答:设置TIME_WAITING状态的2个用途。1.网络传输可能丢包设置TIME_WAITING让服务器确切收到客户端回复的服务端的fin的ack报文。如果丢失客户端有时间重传。2.让客户端有足够的时间来断开连接舍弃后面的报文。避免其他程序在客户端分手后立刻占用其端口收到不该它收的数据。给客户端有足够的时间安全舍弃报文。通常为2个MSL周期(最长报文段寿命/最长分节生命期 max segement lifetime,MSL是任何IP数据报能够在因特网中存活的最长时间,任何TCP实现都必须为MSL选择一个值。RFC 1122[Braden 1989]的建议值是2分钟,不过源自Berkelcy的实现传统上改用30秒这个值。这意味着TIME_WAIT状态的持续时间在1分钟到4分钟之间)。如果发生网络异常此时keep-alive参数就会发挥作用

你可能感兴趣的:(笔记:TCP/IP与网络模型)