概述

7层协议 5层协议 TCP/IP
体系结构
作用 协议
应用层 应用层 应用层 为特定应用程序提供数据传输服务 HTTP(超文本传输协议)
DHCP(动态主机配置协议)
DNS、FTP、电子邮件协议
表示层 负责数据格式的转换
(加密数据、压缩解压)
会话层 建立及管理会话
(服务器验证用户登录)
传输层 传输层 传输层 为进程提供数据传输服务 TCP、UDP
(MAC地址+IP地址+端口号)
网络层 网络层 网际层 为主机提供数据传输服务 IP协议
(MAC地址+IP地址)
数据链路层 数据链路层 网络接口层 同一链路的主机提供数据传输服务
封装成帧
以太网
物理层 物理层

image.png

传输层

TCP和UDP的区别?

  1. TCP是面向连接一对一的传输速度慢、的可靠传输有流量控制,拥塞控制面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),
  2. UDP无连接一对一,一对多,多对一,多对多都可以的、传播速度快的尽可能正确交付面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部)
  3. 应用场景:TCP用于可靠传输(例如:文件传输)和UDP用于实时应用(例如:视频、电话、直播等)。

    详细说明TCP三次握手机制

    1. ![](https://cdn.nlark.com/yuque/0/2022/webp/2657223/1655886735832-ebab78b8-6fda-4fec-bc32-d68b995760f8.webp#clientId=ud77ebe31-36dc-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=431&id=ua7eaebb0&margin=%5Bobject%20Object%5D&originHeight=931&originWidth=1200&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u6349e1f8-d072-40f0-900b-ff2a7368d29&title=&width=556)
  4. 首先1服务端一直处于监听(listen)状态

  5. 客户端主动发送请求,向服务端发送同步报文随机初始序列号,并进入send状态,等待服务器确认
  6. 服务器收到请求报文,若同意连接,就发送同步确认报文随机序列号,并进入recv。
  7. 客服端收到确认报文和随机序列号后,向服务端发送确认号序列号
  8. 建立连接,传输数据

    为什么TCP一定是3次握手?非2次

  9. 防止过期的连接请求报文突然又传送到服务器,因而产生错误和浪费资源。

  • 因为双方都进入”ESTABLISHED”状态便不会接收任何内容,若此时某些断开的确认报文正在发送,就没有可以接收的客户端了,因而使得服务器资源造成浪费。
  1. 三次握手才能让双方都确认自己和对方的发送和接收能力都正常。
  • 第一次:客户端发送内容,服务端接收内容
    • 服务端确定自己接收能力客服端发送能力正常
  • 第二次:服务端发送内容,客户端接收内容
    • 客服端确认自己的发送能力(ACK确认报文)和接收能力正常
  • 第三次:客户端发送内容,由服务端接收
    • 服务端确认自己的发送能力接收能力正常
  1. 告知对方自己的初始序列号值,并确认收到对方的初始序列号值
  • 如果是两次握手,只有发起方的初始序列号可以得到确认,另一方得不到

    为什么TCP一定是3次握手?非4次

  1. 三次已经确认好了自己和对方的发送和接收能力以及初始序列号了,因此不需要四次了。

    详细说明TCP的四次挥手机制?

参考连接

https://github.com/CyC2018/CS-Notes