10

OSI 七层模型与 TCP/IP 四层模型

 3 years ago
source link: https://wsgzao.github.io/post/osi/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
OSI 七层模型与 TCP/IP 四层模型

偶然从微信上看到《两地书》–K8s 基础知识 这篇文章,虽然是概括,但是配图和基础介绍都不错,本文单独把 OSI 七层模型与 TCP/IP 四层模型 方便自己回顾。

OSI 七层模型与 TCP/IP 四层模型

2019 年 06 月 26 日 - 更新 TCP/IP 的三次握手与四次挥手
2019 年 06 月 20 日 - 初稿

阅读原文 - https://wsgzao.github.io/post/osi/

扩展阅读

《两地书》–K8s 基础知识
https://mp.weixin.qq.com/s?__biz=MzUzNjAxODg4MQ==&mid=2247483841&idx=1&sn=c236d6829a2cce8ad56236bf75085bbf&scene=21#wechat_redirect

简单的回顾下 TCP/IP 的三次握手与四次挥手 - https://blog.ansheng.me/article/tcp-ip-three-handshakes-and-four-waving/


OSI 七层模型

OSI 模型(Open System Interconnection Reference Model,缩写为 OSI), 全名 “开放式系统互联通信参考模型”,是一个试图使各种计算机在全世界范围内互联为网络的标准框架。1983 年,国际标准组织(ISO)发布了著名的 ISO/IEC 7498 标准,它定义了网络互联的 7 层框架,也就是开放式系统互联参考模型。

7 层是指 OSI 七层协议模型,主要是:

  • 应用层(Application)
  • 表示层(Presentation)
  • 会话层(Session)
  • 传输层(Transport)
  • 网络层(Network)
  • 数据链路层(Data Link)
  • 物理层(Physical)

第 7 层应用层 (Application Layer)

主要功能: 为应用软件提供接口,使应用程序能够使用网络服务
典型设备: 网关
典型协议、标准和应用: http(80)、ftp(20/21)、smtp(25)、pop3(110)、telnet(23)、dns(53)

第 6 层表示层 (Presentation Layer)

主要功能: 数据的解码和编码,数据的加密和解密,数据的压缩和解压缩
典型设备: 网关
典型协议、标准和应用: ASCLL、PICT、TIFF、JPEG、 MIDI、MPEG

第 5 层会话层 (Session Layer)

主要功能: 建立、维护、管理应用程序之间的会话
典型设备: 网关
典型协议、标准和应用: RPC、SQL、NFS 、X WINDOWS、ASP

第 4 层传输层 (Transport Layer)

主要功能: 负责建立端到端的链接,保证保温在端到端之间的传输
典型设备: 网关
典型协议、标准和应用: TCP、UDP、SPX

第 3 层网络层 (Network Layer)

主要功能: 负责将分组数据从源端传输到目的端,网络层的主要作用就是路由和寻址
典型设备: 路由器
典型协议、标准和应用: IP、IPX、APPLETALK、ICMP

第 2 层数据链接层 (Data Link Layer)

主要功能: 在不可靠的物理链路上,提供可靠的数据传输服务
典型设备: 交换机、网桥、网卡
典型协议、标准和应用: 802.2、802.3ATM、HDLC、FRAME RELAY

第 1 层物理层 (Physical Layer)

主要功能: 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输
典型设备: 集线器、中继器
典型协议、标准和应用: V.35、EIA/TIA-232

TCP/IP 协议族常用协议

应用层: TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
传输层: TCP,UDP
网络层: IP,ICMP,OSPF,EIGRP,IGMP
数据链路层: SLIP,CSLIP,PPP,MTU

TCP/IP 四层模型

互联网协议族(英语:Internet Protocol Suite,缩写为 IPS),是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为 TCP/IP 协议族(英语:TCP/IP Protocol Suite,或 TCP/IP Protocols),简称 TCP/IP。因为这个协议家族的两个核心协议,包括 TCP(传输控制协议)和 IP(网际协议),为这个家族中最早通过的标准 。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为 TCP/IP 协议栈(英语:TCP/IP Protocol Stack)。这些协议最早发源于美国国防部(缩写为 DoD)的 ARPA 网项目,因此也被称作 DoD 模型(DoD Model)。这个协议套组由互联网工程任务组负责维护。

TCP/IP 提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。协议套组下的各种协议,依其功能不同,被分别归属到这四个层次结构之中,常被视为是简化的七层 OSI 模型

TCP/IP 和 OSI 模型组并不能精确的匹配,但是我们可以尽可能的参考 OSI 模型并在其中找到 TCP/IP 的对应位置。如上图所示,我们已经标出了 TCP/IP 对应的四层位置所在。通常人们认为 OSI 模型最上面三层(应用层、表示层、会话层)在 TCP/IP 中是一个应用层。由于 TCP/IP 有一个相对比较弱的会话层,由 TCP 和 RTP 下的打开和关闭连接组成,并在 TCP/UDP 下的各种应用提供不同的端口号,这些功能被单个的应用程序添加。

TCP/IP 三次握手

在建立 TCP 连接之前需要进行三次握手,以便于链接到服务器,如果要断开服务器需要进行四次挥手,具体流程如下。

  • 第一次握手: Client 将标志位 syn 设置为 1,随机产生一个 Number 值 seq=100,并将数据发送给 Server,Client 进入 SYN_SENT 状态,等待 Server 确认;
  • 第二次握手: Server 收到数据包后 Client 设置的标志位 syn=1 知道 Client 要求建立连接,Server 将标志位 syn 和 ack 都置为 1,并且发送一个确认序号 ack=100+1,然后随机产生一个值 seq=130,并将该数据包发送给 CLient 以确认连接请求,Server 进入 SYN_RCVD 状态。
  • 第三次握手: Client 收到确认后,检查 ack 状态是否为 100+1,ACK 是否为 1,如果正确则将标志位 ACK 置为 1,ack=130+1,并将该数据包发送给 Server,Server 检查 ack 是否为 130+1,ACK 是否为 1,如果正确则连接建立成功,Client 和 Server 进入 ESTABLISHED 状态,完成三次握手,随后 Client 与 Server 之间可以开始传输数据了。

一个完整的三次握手也就是 请求 — 应答 — 再次确认

TCP/IP 四次挥手

为什么要挥手,简单点来说就是既然建立了链接,那么肯定还要断开连接吖,连接总不能一直占用吧,这样多浪费系统该资源,下面让我们来看看四次挥手的流程。

  • 第一次挥手: Client 发送一个 FIN,用来关闭 Client 到 Server 的数据传送,Client 进入 FIN_WAIT_1 状态。
  • 第二次挥手: Server 收到 FIN 后,发送一个 ACK 给 Client,确认序号为 ack=100+1(与 SYN 相同,一个 FIN 占用一个序号),Server 进入 CLOSE_WAIT 状态。
  • 第三次挥手: Server 发送一个 FIN,用来关闭 Server 到 Client 的数据传送,Server 进入 LAST_ACK 状态。
  • 第四次挥手: Client 收到 FIN 后,Client 进入 TIME_WAIT 状态,接着发送一个 ACK 给 Server,确认序号为 131+1,Server 进入 CLOSED 状态,完成四次挥手。
  1. 第一次挥手: Client 发送一个 FIN,用来关闭 Client 到 Server 的数据传送,Client 进入 FIN_WAIT_1 状态。
  2. 第二次挥手: Server 收到 FIN 后,发送一个 ACK 给 Client,确认序号为 ack=100+1(与 SYN 相同,一个 FIN 占用一个序号),Server 进入 CLOSE_WAIT 状态。
  3. 第三次挥手: Server 发送一个 FIN,用来关闭 Server 到 Client 的数据传送,Server 进入 LAST_ACK 状态。
  4. 第四次挥手: Client 收到 FIN 后,Client 进入 TIME_WAIT 状态,接着发送一个 ACK 给 Server,确认序号为 131+1,Server 进入 CLOSED 状态,完成四次挥手。

为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

这是因为服务端在 LISTEN 状态下,收到建立连接请求的 SYN 报文后,把 ACK 和 SYN 放在一个报文里发送给客户端。而关闭连接时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即 close,也可以发送一些数据给对方后,再发送 FIN 报文给对方来表示同意现在关闭连接,因此,己方 ACK 和 FIN 一般都会分开发送。

为什么建立连接要三次握手?

目的: 防止已经失效的连接请求到达服务端,创建无效的连接,浪费资源。
说明: 当客户端发出的第一个连接请求在网络上的某个节点被滞留了(网络会存在许多不可靠的因素),过一段时间后突然又到达了服务端,服务端误以为这是一个新的建立连接的请求,于是就会向客户端发出确认包并建立连接。
实际上客户端当前并没有发出创建连接的请求,就会丢弃服务端的确认包。而服务端却创建了连接并等待客户端发送数据,浪费了相关的资源。

SYN 攻击

在三次握手过程中,服务器 发送 SYN-ACK 之后,收到客户端的 ACK 之前 的 TCP 连接称为半连接 (half-open connect)。此时服务器处于 SYN_RECV 状态,当收到 ACK 后,服务器转入 ESTABLISHED 状态.

SYN 攻击就是:攻击客户端在短时间内伪造大量不存在的 IP 地址,向服务器不断地发送 SYN 包,服务器回复 ACK 确认包,并等待客户的确认从而建立连接。由于源地址是不存在的,不会再发送 ACK 确认包,所以服务器需要不断的重发直至超时,这些伪造的 SYN 包将长时间占用未连接队列,正常的 SYN 请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

SYN 攻击是一个典型的 DDOS 攻击。检测 SYN 攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源 IP 地址是随机的,基本上可以断定这是一次 SYN 攻击

为什么 TIME_WAIT 状态需要经过 2MSL (最大报文段生存时间) 才能返回到 CLOSE 状态?

虽然按道理,四个报文都发送完毕,我们可以直接进入 CLOSE 状态了,但是我们必须假象网络是不可靠的,有可以最后一个 ACK 丢失。所以 TIME_WAIT 状态就是用来重发可能丢失的 ACK 报文。

TCP 的那些事儿(上)
TCP 的那些事儿(下)


Recommend

  • 62

    1. OSI七层和TCP/IP四层的关系1.1 OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。1.2 OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。1.3...

  • 64

    本文主要介绍了对产品设计评审的视角,这个视角可以用来帮助产品设计人员对自己产品的产品设计文档进行自检,或者作为团队进行设计评审的参考。 如果你是一名新晋产品助理,是否遇到过好不容易接到独立制作PRD的任务却在提交评审前提心吊胆,评审中被产品经理击中...

  • 65

    引言 今天回顾一下--网络七层模型&&网络数据包 网络基本概念 OSI模型 OSI 模型(Open System Interconnection model)是一个由国际标准化组织提出的概念模型,试图供一个使各种不同的计算...

  • 10

    1、 计算机网络体系 计算机网络体系结构分为3种:OSI体系结构(七层),TCP/IP体系结构(四层),五层体系结构。 OSI体系结构 : 概念清楚,理论也比较完整,但是它既复杂又不实用。 T...

  • 4

    The OSI model doesn't map well to TCP/IP • networking • TCP/IP is the set of networking p...

  • 8

    OSI 七层模型和 TCP/IP 协议比较 浏览:2753次  出处信息 OSI (Open System Interconnection), 开放式系统互联...

  • 2
    • www.biaodianfu.com 3 years ago
    • Cache

    OSI七层模型和TCP/IP四层模型

    术→技巧, 研发 OSI七层模型和TCP/IP四层模型 钱魏Way · 2021-11-2...

  • 6
    • kim85326.github.io 3 years ago
    • Cache

    OSI 模型

    全名 Open System Interconnection Reference Model OSI 模型是幹嘛用的? 難道你上網的時候都不會有疑問 為什麼我們可以打開瀏覽器輸入 google.com 就可以連到 google 的網頁? 電腦和電腦之...

  • 4

    HAproxy七层负载均衡(1)四层/七层负载均衡 原创 资本家的鱼 2022-06-14...

  • 5
    • www.jdon.com 2 years ago
    • Cache

    公有云中的OSI模型定位 - Eyal

    公有云中的OSI模型定位 - Eyal 解道Jdon ...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK