TCP/IP:有层次的协议栈

简介: TCP/IP:有层次的协议栈

说明

《透视HTTP协议》罗剑锋 (奇虎360技术专家)在极客时间开的一门专栏课,笔者记录一下学习笔记,仅供参考。



TCP/IP 网络分层模型

层次图如下:

aHR0cHM6Ly91c2VyLWdvbGQtY2RuLnhpdHUuaW8vMjAxOS8xMS8xOC8xNmU3ZGYxY2IyOGZmYzhm.png


第一层:链接层(link layer

负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标记网络上的设备,所以有时候也叫 MAC 层


第二层:网际层或者网络互连层(internet layer)

   IP 协议就处在这一层。因为 IP 协议定义了IP 地址的概念,所以就可以在链接层的基础上,用 IP 地址取代 MAC 地址,把许许多多的局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备时只要把 IP 地址再“翻译”成 MAC 地址就可以了。


第三层:传输层(transport layer)

保证数据在 IP 地址标记的两点之间“可靠”地传输,是 TCP 协议工作的层次。


  • TCP:是一个有状态的协议,需要先与对方建立连接然后才能发送数据,而且保证数据不丢失不重复
  • UDP:则无状态,不用事先建立连接就可以任意发送数据,但不保证数据一定会发到对方。
  • TCP 的数据是连续的字节流有先后顺序,而 UDP 则是分散的小数据包,是顺序发乱序收


第四层:应用层(application layer)

有各种面向具体应用的协议。例如 Telnet、SSH、FTP、SMTP、HTTP


MAC 层的传输单位是(frame)。

IP 层的传输单位是(packet)。

TCP 层的传输单位是(segment)。

HTTP 的传输单位则是消息或报文(message)。

可以统称为数据包


OSI 网络分层模型

OSI,全称是开放式系统互联通信参考模型Open System Interconnection Reference Model)。


OSI 模型分成了七层,如下图:

aHR0cHM6Ly91c2VyLWdvbGQtY2RuLnhpdHUuaW8vMjAxOS8xMS8xOC8xNmU3ZGYxY2I1Y2Y1MTQ0.png


第一层(物理层):网络的物理形式,例如电缆、光纤、网卡、集线器等等

第二层(数据链路层):它基本相当于 TCP/IP 的链接层

第三层(网络层):相当于 TCP/IP 里的网际层

第四层(传输层):相当于 TCP/IP 里的传输层

第五层(会话层):维护网络中的连接状态,即保持会话和同步

第六层(表示层):把数据转换为合适、可理解的语法和语义

第七层(应用层):面向具体的应用传输数据。




两个分层模型的映射关系

大概的一个对应关系:



  • 第一层:物理层,TCP/IP 里无对应
  • 第二层:数据链路层,对应 TCP/IP 的链接层
  • 第三层:网络层,对应 TCP/IP 的网际层
  • 第四层:传输层,对应 TCP/IP 的传输层
  • 第五、六、七层:统一对应到 TCP/IP 的应用层


TCP/IP 实际应用时的会话管理编码转换压缩等和具体应用经常联系的很紧密,很难分开。例如:HTTP 协议就同时包含了连接管理数据格式定义


aHR0cHM6Ly91c2VyLWdvbGQtY2RuLnhpdHUuaW8vMjAxOS8xMS8xOC8xNmU3ZGYxY2IzY2FjOGRm.png


四层负载均衡:就是指工作在传输层上,基于 TCP/IP 协议的特性,例如 IP 地址、端口号等实现对后端服务器的负载均衡。


七层负载均衡:就是指工作在应用层上,看到的是 HTTP 协议,解析 HTTP 报文里的 URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器。


小窍门(不是绝对的):


“两个凡是”:凡是由操作系统负责处理的就是四层或四层以下,否则,凡是需要由应用程序(也就是你自己写代码)负责处理的就是七层。




TCP/IP 协议栈的工作方式


aHR0cHM6Ly91c2VyLWdvbGQtY2RuLnhpdHUuaW8vMjAxOS8xMS8xOC8xNmU3ZGYxY2I2MzA2MzUx.png


1、HTTP 协议的传输过程就是这样通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,然后通过下层发送出去。


2、接收数据则是相反的操作,从下往上穿过协议栈,逐层拆包,每层去掉本层的专有头,上层就会拿到自己的数据。










目录
相关文章
|
缓存 网络协议 Linux
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
|
3天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
22 3
|
3天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
13 2
|
14天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
43 13
|
15天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
22天前
|
网络协议 安全 大数据
TCP/IP协议栈中何时使用TCP?
【10月更文挑战第20天】TCP/IP协议栈中何时使用TCP?
28 2
|
1月前
|
网络协议 算法 数据格式
【TCP/IP】UDP协议数据格式和报文格式
【TCP/IP】UDP协议数据格式和报文格式
119 3
|
1月前
|
XML JSON 网络协议
【TCP/IP】自定义应用层协议,常见端口号
【TCP/IP】自定义应用层协议,常见端口号
26 3
|
2月前
|
网络协议 网络架构 数据格式
TCP/IP基础:工作原理、协议栈与网络层
TCP/IP(传输控制协议/互联网协议)是互联网通信的基础协议,支持数据传输和网络连接。本文详细阐述了其工作原理、协议栈构成及网络层功能。TCP/IP采用客户端/服务器模型,通过四个层次——应用层、传输层、网络层和数据链路层,确保数据可靠传输。网络层负责IP寻址、路由选择、分片重组及数据包传输,是TCP/IP的核心部分。理解TCP/IP有助于深入掌握互联网底层机制。
423 2
|
3月前
|
网络协议 算法 Linux
在Linux中,TCP/IP协议栈的工作原理是什么?
在Linux中,TCP/IP协议栈的工作原理是什么?