TCP 如何保证可靠性?OSI 的七层模型都有哪些?

保证可靠性

序列号和确认号机制

TCP 发送端发送数据包的时候会选择一个 seq 序列号,接收端收到数据包后会检测数据包的完整性,如果检测通过会响应一个 ack 确认号表示收到了数据包。

超时重发机制

TCP 发送端发送了数据包后会启动一个定时器,如果一定时间没有收到接受端的确认后,将会重新发送该数据包。

对乱序数据包重新排序

IP 网络层传输到 TCP 层的数据包可能会乱序, TCP 层会对数据包重新排序再发给应用层。

丢弃重复数据

IP 网络层传输到 TCP 层的数据包可能会重复, TCP 层会丢弃重复的数据包。

流量控制

TCP 发送端和接收端都有一个固定大小的缓冲空间,为了防止发送端发送数据的速度太快导致接收端缓冲区溢出,发送端只能发送接收端可以接纳的数据,为了达到这种控制效果,TCP 用了流量控制协议(可变大小的滑动窗口协议)来实现。

OSI 的七层模型

OSI 七层模型一般指开放系统互连参考模型 (Open System Interconnect 简称 OSI) 是国际标准化组织(ISO) 和国际电报电话咨询委员会 (CCITT) 联合制定的开放系统互连参考模型 , 为开放式互连信息系统提供了一种功能结构的框架。
  • 应用层:各种应用程序协议,比如 HTTPHTTPSFTPSOCKS 安全套接字协议、DNS 域名系统、GDP 网关发现协议等等。
  • 表示层:加密解密、转换翻译、压缩解压缩,比如 LPP 轻量级表示协议。
  • 会话层:不同机器上的用户建立和管理会话,比如 SSL 安全套接字层协议、TLS 传输层安全协议、RPC 远程过程调用协议等等。
  • 传输层:接受上一层的数据,在必要的时候对数据进行分割,并将这些数据交给网络层,保证这些数据段有效到达对端,比如 TCP 传输控制协议、UDP 数据报协议。
  • 网络层:控制子网的运行:逻辑编址、分组传输、路由选择,比如 IPIPV6SLIP 等等。
  • 数据链路层:物理寻址,同时将原始比特流转变为逻辑传输路线,比如 XTP 压缩传输协议、PPTP 点对点隧道协议等等。
  • 物理层:机械、电子、定时接口通信信道上的原始比特流传输,比如 IEEE802.2 等等。

以下是一些常用协议的端口号及其对应的网络层次:

  1. HTTP (Hypertext Transfer Protocol): 80 (应用层)
  2. HTTPS (Hypertext Transfer Protocol Secure): 443 (应用层)
  3. FTP (File Transfer Protocol): 20 (数据传输)和21 (控制连接) (应用层)
  4. SSH (Secure Shell): 22 (应用层)
  5. Telnet: 23 (应用层)
  6. SMTP (Simple Mail Transfer Protocol): 25 (应用层)
  7. DNS (Domain Name System): 53 (应用层)
  8. DHCP (Dynamic Host Configuration Protocol): 67 (服务器)和68 (客户端) (应用层)
  9. POP3 (Post Office Protocol version 3): 110 (应用层)
  10. IMAP (Internet Message Access Protocol): 143 (应用层)
  11. SNMP (Simple Network Management Protocol): 161 (应用层)
  12. RDP (Remote Desktop Protocol): 3389 (应用层)
  13. NTP (Network Time Protocol): 123 (应用层)
  14. ICMP (Internet Control Message Protocol): N/A (网络层)
  15. TCP (Transmission Control Protocol): N/A (传输层)
  16. UDP (User Datagram Protocol): N/A (传输层)

浏览器中输入:www.woaijava.com之后都发生了什么?

  • 由域名IP地址 寻找IP地址的过程依次经过了浏览器缓存、系统缓存、hosts文件、路由器缓存、 递归搜索根域名服务器。
  • 建立TCP/IP连接(三次握手具体过程)
  • 由浏览器发送一个HTTP请求
  • 经过路由器的转发,通过服务器的防火墙,该HTTP请求到达了服务器
  • 服务器处理该HTTP请求,返回一个HTML文件
  • 浏览器解析该HTML文件,并且显示在浏览器端
  • 这里需要注意:
  • HTTP协议是一种基于TCP/IP的应用层协议,进行HTTP数据请求必须先建立TCP/IP连接
  • 可以这样理解:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
  • 两个计算机之间的交流无非是两个端口之间的数据通信,具体的数据会以什么样的形式展现是以不同的应用层协议来定义的。
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值