OSI 与 TCP/IP 协议栈
来源:网络基础课程讲义(
OSI与TCPIP协议.pptx、TCPIP协议.pdf)。由 PDF/PPTX/DOCX 转为 Markdown 并抽取原文图片,仅整理排版与章节层级,正文内容未改写。
一、课件:OSI 与 TCP/IP 协议栈
《OSI与TCP/IP协议栈》
第十二条第二款 任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得危害网络安全,不得利用网络从事危害国家安全、荣誉和利益,煽动颠覆国家政权、推翻社会主义制度,煽动分裂国家、破坏国家统一,宣扬恐怖主义、极端主义,宣扬民族仇恨、民族歧视,传播暴力、淫秽色情信息,编造、传播虚假信息扰乱经济秩序和社会秩序,以及侵害他人名誉、隐私、知识产权和其他合法权益等活动。 第四十四条 任何个人和组织不得窃取或者以其他非法方式获取个人信息,不得非法出售或者非法向他人提供个人信息。 第六十四条第二款 违反本法第四十四条规定,窃取或者以其他非法方式获取、非法出售或者非法向他人提供个人信息,尚不构成犯罪的,由公安机关没收违法所得,并处违法所得一倍以上十倍以下罚款,没有违法所得的,处一百万元以下罚款。

《中华人民共和国刑法》 第二百八十五条 【非法侵入计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。 【非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。 【提供侵入、非法控制计算机信息系统程序、工具罪】提供专门用于侵入、非法控制计算机信息系统的程序、工具,或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严重的,依照前款的规定处罚。 单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照各该款的规定处罚。
第二百八十六条 【破坏计算机信息系统罪】违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。 违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。 故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。 单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照第一款的规定处罚。
《中华人民共和国刑法修正案(九)》 二十八、在刑法第二百八十六条后增加一条,作为第二百八十六条之一:网络服务提供者不履行法律、行政法规规定的信息网络安全管理义务,经监管部门责令采取改正措施而拒不改正,有下列情形之一的,处三年以下有期徒刑、拘役或者管制,并处或者单处罚金:
- (一)致使违法信息大量传播的;
- (二)致使用户信息泄露,造成严重后果的;
- (三)致使刑事案件证据灭失,情节严重的;
- (四)有其他严重情节的。
- “单位犯前款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照前款的规定处罚。”
- “有前两款行为,同时构成其他犯罪的,依照处罚较重的规定定罪处罚。”
分层思想 OSI参考模型 TCP/IP协议族 数据封装与解封装过程 常见的物理层介质 通过抓包分析TCP/IP协议架构
分层思想
通信需求
—> 定义协议标准
完成每一件事,需要的协议太多! 怎么办?
分层思想
享用牛奶的人未必了解其生产过程
- 但牛奶质量有问题,又如何快速查找原因?








我不管怎么做的,好喝就行。
分层思想
使用网络的人未必知道数据的传输过程
- 但是网络通信失败,又如何快速查找失败原因?

我不管怎么传的,能聊就行。




分层思想
写信人
邮局
运输部门
收信人
甲地
乙地
OSI七层模型

通信
协议
分层
OSI七层 模型
通信的双方需要“讲”相同的语言
网络通信的过程很复杂,为了降低复杂性
1974年,ISO组织发布了OSI参考模型
OSI七层模型-工作模型
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
物理层协议
数据链路层协议
网络层协议
传输层协议
会话层协议
表示层协议
应用层协议
比特
帧
数据包
数据段
PDU
接口
主机A
主机B
数据单元
层
1
2
3
4
5
6
7
数据的封装与解封装过程

Internet
Hello!
数据的封装与解封装过程
IP包头
Hello
报文/IP包/包
数据段/段
TCP/UDP头
MAC子层
高层数据
FCS
协议数据单元
数据的封装与解封装过程
报文
OSI模型 vs TCP/IP模型
OSI 7层模型
TCP/IP 5层模型
网络接口层
TCP/IP 4层模型
TCP/IP协议族的组成

设备与层的对应关系

计算机/防火墙
防火墙
路由器
交换机/网卡
网线

各层间通信2-2
物
数
网
常见的物理层介质
物理层信号
- 模拟信号:指用连续变化的物理量表示的信息,其信号的振幅,或频率,或相位随时间作连续变化
- 数字信号:指信号的大小用二进制数“0、1” 表示
- 二进制位(bit):8bit=1Byte,1024B=1KB,1024KB=1MB,1024MB=1GB、1024GB=1TB,1024TB=1PB
时间t
V
频率(周期)
振幅
相位
模拟信号
数字信号
常见的物理层介质
- 有线介质:同轴电缆、双绞线、光纤
- 同轴电缆:粗缆、细缆
- 双绞线:UTP(非屏蔽双绞线)、STP(屏蔽双绞线);五类线、超五类线、六类线、七类线
- 光纤:单模光纤(一般为:黄色)、多模光纤(一般为:橙色、蓝色)
- 无线介质:红外线、无线电、微波



常见的物理层介质
双绞线的线序及跳线分类
- 双绞线的线序标准:
- T568A:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕
- T568B:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕
- 双绞线的跳线分类(按用途)
- 直通线:T568A———-T568A, T568B———-T568B(用于异种设备连接)
- 交叉线: T568A———-T568B(用于同种设备连接)
- 全反线: T568A———-反T568A, T568B———-反T568B(配置线,也叫console线)
通过抓包分析TCP/IP协议架构
安装Wireshark
- Wireshark(前称叫Ethereal)是一款开源的网络数据包分析软件
- 一般按默认安装即可 抓包分析TCP/IP协议架构
- 打开浏览器,打开Wireshark,定义Wlan为捕获接口,开始抓包
- 在浏览器地址栏中输入“http://www.baidu.com”,百度页面出来后停止抓包,进行如下分析:

实验一:OSI理论记忆及整理
- 1.OSI7层模型及TCP/IP5层模型
- 2.写出每层常见的协议
- 3.写出应用层常见的端口,并标明分别使用TCP还是UDP
- 4.写出应用层与传输层常见协议之间的关联
- 5.写出每层工作的设备
- 6.画图并标识完整的数据封装及解封装的过程!
- 7.描述TCP及UDP的区别,及共同作用
- 8.写出2-5层常见协议之间的关联
二、讲义:TCP/IP 协议簇
来源:(
TCPIP协议.pdf,共 8 页)。由 PDF 转为 Markdown 并抽取原文图片,仅整理排版与章节层级,正文内容未改写。
TCP/IP协议是用于因特网通信协议的标准,只有遵守这个标准,计算机之间才能进行通信。
在 TCP/IP 中包含一系列用于处理数据通信的协议:
TCP (传输控制协议) - 应用程序之间通信(http协议超文本传输协议)
UDP (用户数据包协议) - 应用程序之间的简单通信IP (网际协议) - 计算机之间的通信ICMP (因特网消息控制协议) - 针对错误和状态DHCP (动态主机配置协议) - 针对动态寻址TCP/IP是基于TCP和IP这两个最初的协议之上的不同的通信协议的大集合

协议分层
1、TCP(传输控制协议)
TCP 用于应用程序之间的通信。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它工作在OSI(Open Systems Interconnection)模型的传输层。TCP协议由IETF(Internet Engineering Task Force,互联网工程任务组)的RFC 793文档定义,是互联网中广泛使用的网络通信协议之一。
TCP协议的主要特点
面向连接:在数据传送之前必须先建立连接,数据传送结束后要释放连接。这种连接是一对一的,因此TCP不适用于广播和多播。使用TCP协议通信的两端,必须都实现TCP协议。
可靠性:TCP通过校验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。当TCP发送一个段之后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
全双工通信:
单工:只能往一个方向发送数据
半双工:双方能够互相发送数据,但是不能同时发送(对讲机)
全双工:双方能够互相发送数据,并且可以同时发送(手机)
TCP允许通信双方的应用程序在任何时候都能发送数据。TCP连接的两端都设有缓存用于临时存放双向通信的数据。在发送时,应用程序在将数据传送给TCP的缓存后,就可以做自己的事,(QQ离线传输)而TCP在合适的时候将数据传送给对方。TCP为了发送一个报文段,就创建一个报文段,并把它传递给IP层(网络层),而IP层则把TCP报文段封装到IP数据包中,然后通过网络发送出去。
- 面向字节流:TCP中的“流”(Stream)指的是流入或流出进程的字节序列。TCP把TCP连接作为一条字节流来发送报文段,TCP对字节流的内容不作任何解释。TCP对收到的数据仅仅是一连串毫无结构的字节流,TCP不保证接收方应用程序所收到的数据块与发送方应用程序所发出的数据块的界限相一致。
当你使用TCP发送数据时,你可以把数据想象成一股连续不断的水流,TCP会负责把这股水流完整地送到接收方,但接收方收到的数据可能并不是你发送时划分好的那些数据块,而是一段连续的数据流。接收方的应用程序需要自己去处理这段数据流,将其划分成有意义的数据块或消息。
TCP的三次握手
TCP建立连接时,需要进行三次握手:
第一次握手:
客户端:当客户端想要与服务器建立连接时,它会发送一个SYN(同步序列编号)报文段给服务器。这个报文段会将SYN标志位设置为1,并随机生成一个初始序列号(Seq=x),将其放在TCP首部的序列号字段中。此时,客户端的TCP连接状态变为SYN_SENT,表示已发送连接请求,等待服务器确认。
报文示例:客户端 -> 服务器 [SYN, seq=x]第二次握手:
服务器:当服务器收到客户端的SYN报文段后,会对其进行确认。确认的方式是在响应的报文段中设置ACK标志位为1,并将确认号字段设置为收到的序列号加1(Ack=x+1),以此告诉客户端其SYN报文段已被成功接收。同时,服务器也会随机生成一个自己的初始序列号(Seq=y),并将其放在响应报文段的序列号字段中,然后发送一个SYN报文段,即SYN+ACK报文段给客户端,表示同意建立连接。此时,服务器的TCP连接状态变为SYN_RCVD,表示已收到客户端的连接请求,并发送了确认报文,等待客户端的进一步确认。
报文示例:服务器 -> 客户端 [SYN, ACK, seq=y, ack=x+1]第三次握手:
客户端:客户端收到服务器的SYN+ACK报文段后,会对其进行确认。确认的方式是发送一个ACK报文段给服务器,将ACK标志位设置为1,并将确认号字段设置为收到的服务器序列号加1(Ack=y+1),以此告诉服务器其SYN+ACK报文段已被成功接收。此时,客户端的TCP连接状态变为ESTABLISHED,表示连接已经成功建立,可以开始传输数据了。
报文示例:客户端 -> 服务器 [ACK,, ack=y+1]服务器:服务器收到客户端的ACK报文段后,会检查确认号字段的值是否正确(即是否为y+1)。如果正确,则服务器的TCP连接状态也变为ESTABLISHED,此时双方都可以开始传输数据了。
举例:
A:你好,你能听到吗?(让B知道A能说话)
B:我能听到,你能听到吗?(让A知道B能听到,且能说话)
A:我也能听到。(让B知道A能听到)
TCP的四次挥手
TCP释放连接时,需要进行四次挥手:
第一次挥手发起者:客户端(主动关闭方)
动作:客户端打算断开连接,会向服务器发送一个FIN报文段,其中FIN标记位被设置为1(表示这是一个释放连接的报文段),并指定一个序列号seq=u。
状态变化:客户端发送FIN报文段后,进入FIN_WAIT_1状态,等待服务器的确认。
理解:“我客户端没有数据要发给你了”,但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。
第二次挥手接收者:服务器(被动关闭方)
动作:服务器收到客户端的FIN报文段后,会发送一个ACK应答报文段给客户端,以确认收到客户端的FIN报文段。ACK报文段的确认序列号ack=u+1(即在客户端FIN报文段的序列号基础上加1),表示服务器已经准备好接收序列号为u+1及之后的报文段(尽管实际上它可能不再发送数据)。
状态变化:服务器发送ACK后,进入CLOSE_WAIT状态。此时,TCP连接处于半关闭状态,即客户端到服务器的连接已经释放,但服务器到客户端的连接仍然保持开启,服务器仍然可以发送数据给客户端。
理解:收到消息后,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。第三次挥手发起者:服务器(此时也作为主动关闭方)
动作:当服务器完成数据发送并且也准备好关闭连接时,它会向客户端发送一个FIN报文段,其中FIN和ACK标记位都被设置为1(FIN表示释放连接,ACK表示确认收到之前的报文段),并指定一个序列号seq=v(注意这里的v可能与之前的序列号不同,因为它是服务器生成的)。
状态变化:服务器发送FIN后,进入LAST_ACK状态,等待客户端的确认。
理解:告诉客户端,好了,我这边数据发完了,准备好关闭连接了。
第四次挥手接收者:客户端动作:客户端收到服务器的FIN报文段后,会发送一个ACK应答报文段给服务器,以确认收到服务器的FIN报文段。ACK报文段的序列号seq=u+1(与第二次挥手时发送的ACK报文段的序列号相同,表示这是对这个FIN报文段的确认),确认序列号ack=v+1(即在服务器FIN报文段的序列号基础上加
1)。
状态变化:客户端发送ACK后,会进入TIME_WAIT状态,等待足够的时间(通常是2倍的MSL,即报文段最大生存时间)以确保服务器能够收到这个ACK报文段。之后,客户端从TIME_WAIT状态进入CLOSED状态,完成连接的关闭。而服务器在收到客户端的ACK报文段后,会立即从LAST_ACK状态进入CLOSED状态,完成连接的关闭。
理解:客户端收到FIN=N报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。
举例:
A:我说完了,你说完就分了吧!
B:不,等我骂完,在挂。
B:你***
B:我也说完了,可以挂电话了A:好嘞,拜拜
挂断……
解析:
ACK:
SYN:
FIN:
2、UDP
UDP 用于应用程序之间的简单通信。
UDP协议定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到,因此可靠性较差,为了解决这个问题,提高网络可靠性,TCP协议就诞生了。
QQ、DNS解析、英雄联盟、堡垒之夜等使用的UDP协议,因为其无连接、无状态、不可靠但高效的特点。
3、IP
IP 用于计算机之间的通信。
IP 是无连接的通信协议。它不会占用两个正在通信的计算机之间的通信线路。这样,IP 就降低了对网络线路的需求。每条线可以同时满足许多不同的计算机之间的通信需要。
通过 IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。
IP 负责将每个包路由至它的目的地。
4、TCP/IP
TCP/IP 意味着 TCP 和 IP 在一起协同工作。
TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。
IP 负责计算机之间的通信。
TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。
IP 负责将包发送至接受者。
Wireshark抓包工具Wireshark是非常流行的网络封包分析软件,简称小鲨鱼,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。
1、Wireshark抓包原理
Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
Wireshark使用的环境大致分为两种,一种是电脑直连网络的单机环境,另外一种就是应用比较多的网络环境,即连接交换机的情况。
「单机情况」下,Wireshark直接抓取本机网卡的网络流量;
「交换机情况」下,Wireshark通过端口镜像、ARP欺骗等方式获取局域网中的网络流量。
端口镜像:利用交换机的接口,将局域网的网络流量转发到指定电脑的网卡上。
ARP欺骗:交换机根据MAC地址转发数据,伪装其他终端的MAC地址,从而获取局域网的网络流量。
三次握手包抓取案例:
ensp实验拓扑图:
1、客户端配置IP1
2、服务器IP,http
3、客户端访问
4、开启抓包
5、查看包的内容关于Seq,Ack,Win,Len的理解:
1.指明本次数据发送的信息:本次发送的数据起始序号是Seq,发送的长度是Len
2.发送端告诉接收端:我期望的Ack是多少,即希望接收端下次发从seq为ack号的给我,同时我还可以接收Win大小的数据,即接收端可以发送(Ack,Ack + Win)区间内的数据给发送端。
← 回到笔记列表