目录:
OSI 模型(Open System Interconnection model)是一个由国际标准化组织提出的概念模型,试图提供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。
它将计算机网络体系结构划分为七层,每层都可以提供抽象良好的接口。了解 OSI 模型有助于理解实际上互联网络的工业标准——TCP/IP 协议
🔺 OSI 网络七层模型:
第7层 | 应用层 | 提供为应用软件而设的接口,以设置与另一应用软件之间的通信,各种应用程序协议,如HTTP 、FTP 、SMTP 、POP3 |
第6层 | 表示层 | 把数据转换为能与接收者的系统格式兼容并适合传输的格式,信息的语法语义及它们的关联,如加密解密、转换翻译、压缩解压缩 |
第5层 | 会话层 | 不同机器上的用户之间建立及管理会话,在数据传输中设置和维护计算机网络中两台计算机之间的通信连接 |
第4层 | 传输层 | 把传输表头(TH)加至数据以形成数据包(传输表头包含了所使用的协议等发送信息) |
第3层 | 网络层 | 决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组(网络表头包含了网络数据),控制子网的运行,如逻辑编址、分组传输、路由选择 |
第2层 | 数据链路层 | 网络寻址、错误侦测和改错,同时将原始比特流转变为逻辑传输路线,当表头和表尾被加至数据包时,会形成帧 [ 数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法,数据链表尾(DLT)是一串指示数据包末端的字符串 ] |
第1层 | 物理层 | 在局部局域网上传送数据帧,它负责管理计算机通信设备和网络媒体之间的互通(包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等),机械、电子、定时接口通信信道上的原始比特流传输 |
七层模型介绍:
- 物理层:
物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输;
如:RJ45等将数据转化成0和1; - 数据链路层:
数据链路层通过物理网络链路提供数据传输。不同的数据链路层定义了不同的网络和协议特征,其中包括物理编址、网络拓扑结构、错误校验、数据帧序列以及流控;
可以理解为:规定了0和1的分包形式,确定了网络数据包的形式; - 网络层:
网络层负责在源和终点之间建立连接;
可以理解为:此处需要确定计算机的位置,怎么确定?IPv4,IPv6! - 传输层:
传输层向高层级提供可靠的端到端的网络数据流服务
可以理解为:每一个应用程序都会在网卡注册一个端口号,该层就是端口与端口的通信!常用的(TCP/IP)协议; - 会话层:
会话层建立、管理和终止表示层与实体之间的通信会话;
建立一个连接(自动的手机信息、自动的网络寻址); - 表示层:
表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别;
可以理解为:解决不同系统之间的通信,如:Linux下的QQ和Windows下的QQ可以通信; - 应用层:
OSI 的应用层协议包括文件的传输、访问及管理协议(FTAM) ,以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等;
规定数据的传输协议;
OSI 模型各层间关系和通讯时的数据流向如图所示:
常见的应用层协议:
协议 | 端口 | 说明 |
---|---|---|
HTTP | 80 或 8080 | 超文本传输协议 |
HTTPS | 443 | HTTP+SSL,HTTP的安全版 |
FTP | 20,21,990 | 文件传输协议 |
POP3 | 110 | 邮局协议 |
SMTP | 25 | 简单邮件传输协议 |
telnet | 23 | 远程终端协议 |
各种协议在最初 OSI 模型中的位置:
第7层 | 应用层 | 如 HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP |
第6层 | 表示层 | 如 XDR、ASN.1、SMB、AFP、NCP |
第5层 | 会话层 | 如 ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets |
第4层 | 传输层 | 如 TCP、UDP、RTP、SCTP、SPX、ATP、IL |
第3层 | 网络层 | 如 IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25 |
第2层 | 数据链路层 | 如 以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP |
第1层 | 物理层 | 如 线路、无线电、光纤、信鸽 |
🔺 HTTP、TCP/IP 协议与 SOCKET 之间的区别:
1、TCP/IP 连接:
手机能够使用联网功能是因为手机底层实现了TCP/IP
协议,可以使手机终端通过无线网络建立TCP
连接。TCP
协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。
建立起一个TCP
连接需要经过“三次握手”:
第一次握手:客户端发送syn
包(syn=j)
到服务器,并进入SYN_SEND
状态,等待服务器确认;
第二次握手:服务器收到syn
包,必须确认客户的SYN(ack=j+1)
,同时自己也发送一个SYN
包(syn=k)
,即SYN+ACK
包,此时服务器进入SYN_RECV
状态;
第三次握手:客户端收到服务器的SYN+ACK
包,向服务器发送确认包ACK(ack=k+1)
,此包发送完毕,客户端和服务器进入ESTABLISHED
状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP
连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP
连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP
连接的请求,断开过程需要经过“四次握手”。
2、HTTP 连接:
HTTP
协议即超文本传送协议(Hypertext Transfer Protocol ),是Web
联网的基础,也是手机联网常用的协议之一,HTTP
协议是建立在TCP
协议之上的一种应用。
HTTP
连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
1)在HTTP 1.0
中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。
2)在HTTP 1.1
中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。
由于HTTP
在每次请求结束后都会主动释放连接,因此HTTP
连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
3、SOCKET 原理:
(1)socket 套接字概念:
套接字(socket)是通信的基石,是支持TCP/IP
协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
应用层通过传输层进行数据通信时,TCP
会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP
连接或多个应用程序进程可能需要通过同一个TCP
协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP
协议交互提供了套接字(Socket)
接口。应用层可以和传输层通过Socket
接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
(2)建立 socket 连接
建立Socket
连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket
,另一个运行于服务器端,称为ServerSocket
。
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
🔺 TCP/IP四层参考模型:
第4层 | 应用层 | 应用层对应于OSI 参考模型的应用层和表示层,为用户提供所需要的各种服务,例如:FTP 、Telnet 、DNS 、SMTP 等 |
第3层 | 传输层 | 传输层对应于OSI 参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP )和用户数据报协议(UDP ) |
第2层 | 网际互联层 | 网际互联层对应于OSI 参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。该层有三个主要协议:网际协议(IP )、互联网组管理协议(IGMP )和互联网控制报文协议(ICMP ) |
第1层 | 网络接入层 | 网络接入层与OSI 参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP 本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP 的网络接入层进行连接。地址解析协议(ARP )工作在此层,即OSI 参考模型的数据链路层 |
TCP
协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务。
IP
协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。
🔺 模型比较:
共同点:
(1)OSI
参考模型和TCP/IP
参考模型都采用了层次结构的概念。
(2)都能够提供面向连接和无连接两种通信服务机制。
不同点:
(1)OSI
采用的七层模型,而TCP/IP
是四层结构。
(2)TCP/IP
参考模型的网络接口层实际上并没有真正的定义,只是一些概念性的描述。而OSI
参考模型不仅分了两层,而且每一层的功能都很详尽,甚至在数据链路层又分出一个介质访问子层,专门解决局域网的共享介质问题。
(3)OSI
模型是在协议开发前设计的,具有通用性。TCP/IP
是先有协议集然后建立模型,不适用于非TCP/IP网络。
(4)OSI
参考模型与TCP/IP
参考模型的传输层功能基本相似,都是负责为用户提供真正的端对端的通信服务,也对高层屏蔽了底层网络的实现细节。所不同的是TCP/IP
参考模型的传输层是建立在网络互联层基础之上的,而网络互联层只提供无连接的网络服务,所以面向连接的功能完全在TCP
协议中实现,当然TCP/IP
的传输层还提供无连接的服务,如UDP
;相反OSI
参考模型的传输层是建立在网络层基础之上的,网络层既提供面向连接的服务,又提供无连接的服务,但传输层只提供面向连接的服务。
(5)OSI
参考模型的抽象能力高,适合与描述各种网络;而TCP/IP
是先有了协议,才制定TCP/IP
模型的。
(6)OSI
参考模型的概念划分清晰,但过于复杂;而TCP/IP
参考模型在服务、接口和协议的 区别上不清楚,功能描述和实现细节混在一起。
(7)TCP/IP
参考模型的网络接口层并不是真正的一层;OSI
参考模型的缺点是层次过多,划分意义不大但增加了复杂性。
(8)OSI
参考模型虽然被看好,由于没把握好时机,技术不成熟,实现困难;相反,TCP/IP
参考模型虽然有许多不尽人意的地方,但还是比较成功的。