当前位置: 首页 > news >正文

TCP/IP网络分层模型

TCP/IP当初的设计者真的是非常聪明,创造性地提出了“分层”的概念,把复杂的网络通信划分出多个层次,再给每一个层次分配不同的职责,层次内只专心做自己的事情就好,用“分而治之”的思想把一个“大麻烦”拆分成了数个“小麻烦”,从而解决了网络通信的难题。

在这里插入图片描述

TCP/IP协议总共有四层,就像搭积木一样,每一层需要下层的支撑,同时又支撑着上层,任何一层被抽掉都可能会导致整个协议栈坍塌。
层次顺序是“从下往上”数的,所以第一层就是最下面的一层。
第一层叫“链接层”(link layer),负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标记网络上的设备,所以有时候也叫 MAC 层。
第二层叫“网际层”或者“网络互连层”(internet layer),IP 协议就处在这一层。因为 IP 协议定义了“IP 地址”的概念,所以就可以在“链接层”的基础上,用 IP 地址取代 MAC 地址,把许许多多的局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备时只要把 IP 地址再“翻译”成 MAC 地址就可以了。
第三层叫“传输层”(transport layer),这个层次协议的职责是保证数据在 IP 地址标记的两点之间“可靠”地传输,是 TCP 协议工作的层次,另外还有它的一个“小伙伴”UDP。
TCP 是一个有状态的协议,需要先与对方建立连接然后才能发送数据,而且保证数据不丢失不重复。而 UDP 则比较简单,它无状态,不用事先建立连接就可以任意发送数据,但不保证数据一定会发到对方。两个协议的另一个重要区别在于数据的形式。TCP 的数据是连续的“字节流”,有先后顺序,而 UDP 则是分散的小数据包,是顺序发,乱序收。
协议栈的第四层叫“应用层”(application layer),由于下面的三层把基础打得非常好,所以在这一层就“百花齐放”了,有各种面向具体应用的协议。例如 Telnet、SSH、FTP、SMTP 等等,当然还有我们的 HTTP。
MAC 层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。
可以参考《讲讲TCP/IP各层数据术语》看一下数据术语对应层次的图片。

此文章为10月Day 14学习笔记,内容来源于极客时间《透视 HTTP 协议》。

http://www.lryc.cn/news/196495.html

相关文章:

  • 数据结构-----红黑树的插入
  • Excel大量表格选择,快速定位表格
  • 力扣环形链表(1)进阶环形链表(2)及环形链表的约瑟夫问题
  • linux文件权限与目录配置
  • 2023年10月wxid转微信号方法
  • 【Spring Boot 源码学习】@Conditional 条件注解
  • jupyter_快速开始
  • 英特尔 SGX 技术概述
  • SpringBoot核心功能与基础配置
  • vue3后台管理框架之Mock开发
  • 03_51单片机点亮LED灯
  • 【前端设计模式】之备忘录模式
  • 复习Day15:栈与队列part02:20. 有效的括号、1047.删除字符串中所有相邻重复项
  • 基于Java的宠物商城管理系统设计与实现(源码+lw+部署文档+讲解等)
  • Python的GIL存在的情况下,是否还有必要添加线程锁。
  • 基于下垂控制的孤岛双机并联逆变器环流抑制MATLAB仿真模型
  • spring事务面试题
  • C++标准库算法整理
  • 【Codeforces】Codeforces Round 903 (Div. 3)【待补】
  • workerman 运行时报错 Call to undefined function posix_getpid()
  • 【探讨C++中的临时对象:一时之物还是永恒之道?】
  • 二叉树相关算法
  • Vue_Bug npm install报错 code:128
  • 【Unity ShaderGraph】| 如何快速制作一个 马赛克效果 实战
  • 【Java 进阶篇】JavaScript DOM Document对象详解
  • LetCode刷题[简单题](5)按摩师,迭代出最优解(卡尔曼滤波也是类似迭代)
  • C/C++笔试易错与高频题型图解知识点(二)—— C++部分(持续更新中)
  • 使用new创建动态结构
  • 论文笔记与复现[156]PARAFAC. tutorial and applications
  • Python 基础30道测试题