计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型(转载)
PS:原文写的太好了,忍不住转载了
《计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型》
文章目录
- 一.七层?四层?
- 1.为什么需要协议?
- 2.OSI七层模型是干什么的?
- 3.TCP/IP四层(参考)模型
- 4.TCP/IP(参考)模型与OSI七层模型有什么异同?
- 二.自底向上的网络分层(五层)
- 1.物理层
- 2.数据链路层
- ①.定义
- ②.以太网协议
- ③.MAC地址
- ④.广播
- 3.网络层
- ①.IP协议
- ②.子网掩码
- ③.路由/路由器/网关/交换机
- ④.ARP协议
- 4.传输层
- ①.端口号
- ②.Socket
- ③.UDP/TCP协议
- 5.应用层(三合一)
- ①.用户的上网设置
- ②.DNS解析
- 三.自顶向下的数据包结构
- 1.发送请求
- 2.应用层数据包
- 3.传输层数据包(TCP/UDP数据包)
- 4.网络层数据包(IP数据包)
- 5.数据链路层数据包(以太网数据包)
- 6. 服务端响应
一.七层?四层?
1.为什么需要协议?
2.OSI七层模型是干什么的?
3.TCP/IP四层(参考)模型
4.TCP/IP(参考)模型与OSI七层模型有什么异同?
OSI七层网络模型 | TCP/IP四层概念模型 | 对应网络协议 |
---|---|---|
应用层(Application) | 应用层 | HTTP、TFTP, FTP, NFS, WAIS、SMTP |
表示层(Presentation) | Telnet, Rlogin, SNMP, Gopher(Presentation) | |
会话层(Session) | SMTP, DNS | |
传输层(Transport) | 传输层 | TCP, UDP |
网络层(Network) | 网络层 | IP, ICMP, ARP, RARP, AKP, UUCP |
数据链路层(Data Link) | 数据链路层 | FDDI, Ethernet, Arpanet, PDN, SLIP, PPP |
物理层(Physical) | IEEE 802.1A, IEEE 802.2到IEEE 802.11 |
二.自底向上的网络分层(五层)
1.物理层
2.数据链路层
①.定义
物理层就是传输电路的0和1信号的,但是单纯的0和1没有意义,必须规定解读方式:多少个0和1算一组?每个信号有什么意义?——这就是链路层的意义,它在物理层的上方,确定了0和1的分组方式。
②.以太网协议
③.MAC地址
上面我们提到,以太网数据包的“标头”包含了发送者和接受者的信息,那么,发送者和接受者是如何标识的呢?
以太网规定,连入网络的所有设备,都必须具有“网卡”接口。
数据包必须是从一块网卡,传送到另一块网卡
,网卡的地址,就是数据包的发送地址和接受地址,也叫MAC地址。每块网卡出厂的时候,都有
全世界独一无二的MAC地址
,长度是48位的二进制,通常用12个十六进制数表示。前6个十六进制是厂商编号,后6个是该厂商的网卡流水号,有了MAC地址,就可以定位网卡和数据包的路径了。
④.广播
3.网络层
①.IP协议
②.子网掩码
③.路由/路由器/网关/交换机
上面我们已经确定了两台计算机是否遭同一个子网中,如果在,则采用广播+MAC寻址的的方式发送数据包,如果不是,则要采用“路由”的方式了,那么什么是“路由”呢?
- 路由(routing)
路由就是通过互联的网络把信息从源地址传输到目的地址的活动。路由引导分组转送,经过一些中间的节点后,到它们最后的目的地。
从“路由”的定义中可以看到,“路由”是一种活动,一种动作,一种行为,作用是是将信息从原地址传输到目的地址,比较特殊的是,原地址和目标地址是在两个不同的子网中的。那么如何传输呢?路由定义一条路径,经过因特网发送包到另一网络上的地址,但路由不定义完全路径,只定义从主机到可以将包转发到目的地的网关(子网)间的路径段(或从一个子网到另一个子网)。 - 路由器(英语:Router)
简单理解就是实现路由功能的机器。路由器连接两个或多个网络并提供路由功能。
前面我们说过,网卡是计算机的一个硬件,它在接收到网路信息之后,将信息交给计算机。当计算机需要发送信息的时候,也要通过网卡发送。一台计算机可以有不只一个网卡,比如笔记本就有一个以太网卡和一个WiFi网卡。计算机在接收或者发送信息的时候,要先决定想要通过哪个网卡。路由器(router)可以通俗理解为一台配备有多个网卡的专用电脑,它让网卡接入到不同的网络中。 - 网关(英语:Gateway)
是路由器的一种,通常我们把网络层使用的路由器称为网关,路由器可以在网络接口级或物理级路由;网关是在网络层上路由(个人感觉应该是一种概念,即在网络层连节两个子网的概念,并不存在实体,真正实现路由功能还是得靠路由器)。
说的再通俗一点,路由器上面有MAC地址和MAC地址对应的IP,而网关由于是网络层的概念因此只有IP地址。在今天很多局域网采用都是路由来接入网络,因此现在通常指的网关就是路由器的IP。
另外,需要强调一点,虽然路由器上面有MAC地址和IP地址,但它并不能通过MAC地址工作,必须通过IP寻址。因此它是工作在网络层的设备。 - 网络交换机(英语:Network switch)
是一个扩大网络的器材,能为子网中提供更多的连接端口,以便连接更多的电脑。交换机与路由器的区别:工作层次不同
交换机主要工作在数据链路层(第二层)
路由器工作在网络层(第三层)。转发依据不同
交换机转发所依据的对象是:MAC地址。(物理地址)
路由转发所依据的对象是:IP地址。(网络地址)主要功能不同
交换机主要用于组建局域网,连接同属于一个(广播域)子网的所有设备,负责子网内部通信(广播)。
路由主要功能是将由交换机组好的局域网相互连接起来,或者将他们接入Internet。
交换机能做的,路由都能做。
交换机不能分割广播域(子网),路由可以。
路由还可以提供防火墙的功能。
路由配置比交换机复杂。
这里我们还是需要说明一点:
交换机虽然主要依靠MAC地址查找工作在数据链路层,但是他也可以有IP地址,这样就可以进行远程登录等操作了。
LAN,全称Local Area Network,中文名叫做局域网;WAN,全称Wide Area Network,中文名叫做广域网。WAN是一种跨越大的、地域性的计算机网络的集合。通常跨越省、市,甚至一个国家。广域网包括大大小小不同的子网,子网可以是局域网,也可以是小型的广域网;WLAN,全称Wireless LAN, 无线局域网,通俗点讲就是WiFi。
家用的路由器,一般包括了交换机和路由器,因此他有两个接口——WAN端口用于连接至Internet;LAN端口用于连接至局域网设备。
举个栗子
上面说了这么多了,我们来举个例子——比如下图中位于中间位置的路由器有两个接口IP,地址分别为199.165.145.15和199.165.146.3。它们分别接入到两个网络:199.165.145和199.165.146。
显然,199.165.145和199.165.146是两个不同的子网,他们通过中间的路由器连接节,这个路由器有两个网卡——199.165.145.17
和199.165.146.3
。
现在考虑一种情况,我们从主机145.15生成发送到146.21的IP包:
第一步:
先写好数据包的标头,即写清楚发送者的IP地址(199.165.145.15)和接受者的IP地址(199.165.146.21),145.15会参照自己的路由表(routing table),里面有两行记录(当然实际的路由表肯定远远超过两条记录):
第一行表示,如果IP目的地是199.165.145.0这个网络中的主机,那么说明是在同一个子网中,只需要用自己在eth0上的网卡(MAC地址)通过交换机直接传送,不需要前往router(Gateway 0.0.0.0 = “本地送信”)。
第二行表示所有不符合第一行的IP目的地,则应该送往送往Gateway 199.165.145.17这个主机,也就是中间router接入在eth0的网卡IP地址。
我们的IP包目的地为199.165.146.21,不符合第一行,所以按照第二行,发送到中间的router。主机145.15会在数据包的头部写上199.165.145.17对应的MAC地址,这样,就在199.165.145这个局域网中通过交换机(通过广播MAC地址)广播到199.165.145.17对应的主机(路由器)。
第二步:
中间的router在收到IP包之后(,提取目的地IP地址,然后对照自己的routing table:
从前两行我们看到,由于router横跨eth0和eth1两个网络,它可以直接通过eth0和eth1上的网卡直接传送IP包。第三行表示,如果是前面两行之外的IP地址,则需要通过eth1,送往199.165.146.8(右边的router接口IP)。我们的目的地符合第二行,所以将IP放入一个新的帧中,在帧的头部写上199.165.146.21的MAC地址,通过199.165.146网中的交换机广播发往主机146.21。
IP包可以进一步接力,到达更远的主机。IP包从主机出发,根据沿途路由器的routing table指导,在router间接力。IP包最终到达某个router,这个router与目标主机位于一个局域网中,可以直接建立数据链路层的(广播)通信。最后,IP包被送到目标主机。这样一个过程叫做routing(我们就叫IP包接力好了,路由这个词实在是混合了太多的意思)。
整个过程中,IP包不断被主机和路由封装入帧(信封)并拆开,然后借助连接层,在局域网的各个网卡之间传送帧。整个过程中,我们的IP包的内容保持完整,没有发生变化。最终的效果是一个IP包从一个主机传送到另一个主机。利用IP包,我们不需要去操心底层(比如数据链路层)发生了什么。
④.ARP协议
4.传输层
①.端口号
②.Socket
从编程语言的角度,socket是一个无符号整型变量,用来标识一个通信进程。两个进程通信,总要知道这几个信息:双方的ip地址和端口号,通信所采用的协议栈。socket就是和这些东西绑定的,实现socket可以使用unix提供的接口,也可以使用wIndows提供的winSock。
socket本质是编程接口(API),对TCP/IP的封装。TCP/IP只是一个协议栈,必须要具体实现,同时还要提供对外的操作接口(API),这就是Socket接口。通过Socket,我们才能使用TCP/IP协议,因此有了一系列我们知道的函数接口——connect、accept、send、read、write等。
JDK的java.net包下有两个类:Socket和ServerSocket,在Client和Server建立连接成功后,两端都会产生一个Socket实例,操作这个实例,完成所需的会话,而程序员就通过这些API进行网络编程。 Socket连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
③.UDP/TCP协议
UDP和TCP协议都是传输层的协议,他们的主要作用就是在应用层的数据包标头加上端口号(或者在IP协议的数据包中插入端口号)。
- UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。
- TCP协议可以近似认为是有确认机制的UDP协议。每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。
TCP协议主要的确认机制是"三次握手,四次挥手",由于这个协议非常复杂,我们会另起一篇文章详细讲解。
5.应用层(三合一)
①.用户的上网设置
你买了一台新电脑,插上网线,开机,这时电脑能够上网吗?通常你必须做一些设置。有时,管理员(或者ISP)会告诉你下面四个参数,你把它们填入操作系统,计算机就能连上网了:
根据上面的讲解,我们应该知道这四个参数的必要性,只有设置了这些我们才能上网。
②.DNS解析
三.自顶向下的数据包结构
1.发送请求
现在我们从一个用户的角度来自顶向下的过一遍,一个网络数据包的过程。首先我们设置了本机参数:
2.应用层数据包
3.传输层数据包(TCP/UDP数据包)
可以看到,TCP/UDP数据包就是在应用层数据包前面加上端口号的等必要的寻址信息作为头部。
4.网络层数据包(IP数据包)
5.数据链路层数据包(以太网数据包)
分割成四个数据包,分割只能分割数据部分,每个数据包都要具有相同的标头,不然找不到目的地址:
6. 服务端响应
站在巨人的肩膀上摘苹果:
《互联网协议入门(一)阮一峰》
《互联网协议入门(二)阮一峰》
《图解TCP/IP》
《计算机网络:自顶向下方法》等
尊重别人的劳动成果 转载请务必注明出处:https://www.jianshu.com/p/c793a279f698
计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型(转载)相关推荐
- 【重难点】【计算机网络 01】OSI 七层模型和 TCP/IP 四层模型、IP 地址分为哪几类、ping 的原理、从浏览器地址栏输入 URL 到显示网页的过程、什么是 socket
[重难点][计算机网络 01]OSI 七层模型和 TCP/IP 四层模型.IP 地址分为哪几类.ping 的原理.从浏览器地址栏输入 URL 到显示网页的过程.什么是 socket 文章目录 [重难点 ...
- OSI七层模型和TCP/IP四层模型详解
OSI七层模型 七层模型,亦称OSI(Open System Interconnection).参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型 ...
- OSI七层网络模型与TCP/IP四层模型介绍
1.OSI七层网络模型介绍 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了 ...
- osi七层协议和tcp/ip四层协议
(大部分内容为转载) OSI(Open System Interconnection)是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范,共包含七层协议.OSI七层协议是由ISO (I ...
- OSI七层模型和TCP/IP四层体系分层结构
一.OSI七层模型 开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型 ...
- OSI七层协议和TCP/IP四层协议比较
网络协议设计者不应当设计一个单一.巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议.这样做使得每个协议的设计.分析.时限和测试比较容易. ...
- OSI七层网络模型与TCP/IP四层网络
网络协议设计者不应当设计一个单一.巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议.这样做使得每个协议的设计.分析.时限和测试比较容易. ...
- OSI七层网络模型与TCP/IP四层网络模型
2.1 OSI网络分层参考模型 网络协议设计者不应当设计一个单一.巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议.这样做使得每个协议的 ...
- OSI七层网络模型与TCP/IP四层网络模型的关系
一.OSI网络分层参考模型 网络协议设计者不应当设计一个单一.巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议.这样做使得每个协议的设计 ...
- OSI七层协议和TCP/IP四层协议之比较
转载来自 :少年阿宾 http://www.blogjava.net/stevenjohn/archive/2013/03/28/397117.html TCP/IP: 数据链路层:ARP,RARP ...
最新文章
- C# Sato CL4NX打印机发送SBPL指令打印表面信息、RFID芯片数据写入
- tomcat运行模式APR安装
- ESP32 One-Wire驱动功能
- 数学建模学习笔记——多元回归
- VSCode 启动 Vue 项目 npm install 报错
- TKinter的常用组件
- Python dict() 函数
- java file util_Java FileUploadUtil工具类详解
- Java网络编程学习笔记
- LINUX自带库与系统重名怎么办
- STC学习:非易失存储器
- Entry输入框实现登录用户名冷却验证小案例(Tkinter)
- 编码的奥秘:自动操作
- 联想如何在桌面显示计算机和网络图标,联想电脑桌面图标字体变小怎么办
- Altium Designer,打开PCB文件,提示:File type not recognised
- 一款优秀的中文识别库——ocr
- php图标字体库,制作图标字体字库
- 【高德地图进阶】--- 带图片的点(3)
- ROS 多机器人导航salm中的问题
- 均匀分布的期望与方差计算公式