概述
OSI 7 层参考模型
OSI 即 Open System InterConnection,开放系统互连。
7 层具体作用
1.物理层(Physical Layer)
它直接面向原始比特流(0、1)的传输,需要解决好包括传输介质、信道类型、数据与信号之间的转换、信号传输中的衰减和噪声等在内的一些列问题。大家可以理解为在网线、光纤中传输的由0和1组成的一长串数据,而物理层保证的就是使这些数据能完整的从发送端传送到接收端。
2.数据链路层(Data Link Layer)
它在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将发送端网络层发送的数据可靠的传输到接收端的网络层。刚才说到物理层仅仅负责传输比特流,不保证数据的完整性。在实际环境中,难免会受到干扰,导致信息丢失、顺序不正确等问题。在该层必须用纠错码来检错与纠错,是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一无差错的线路。
3.网络层(Network Layer)
互联网,大家可以想象成一张巨大的蜘蛛网,综合交错,节点众多。而网络层的任务就是在这个网络中选择一条合适的路径,使发送端传输层所传下来的数据能够通过所选择的路径到接收端。它提供的功能主要是寻址(一般见到的IP)和路由选择,使传输层不需要了解网络中的数据传输和交换技术。
4.传输层(Transport Layer)
传输层是OSI参考模型中承上启下的层,它的下3层,主要面向网络通信,确保信息被准确有效地传输;他的上3层,主要面向用户主机,进行数据处理,为用户提供各种服务。网络层只是根据网络地址(IP地址)将发送端发出的数据传送到接收端,而传输层则负责将数据可靠地传送到相应的端口(端口大家可以理解为不同的服务或者不同的软件,一般的web服务是80端口,ftp服务是21端口等等。如果你想用浏览器访问网页,就是请求了服务器的web服务,默认访问的是80端口)。
传输层通过弥补网络层服务质量的不足,为会话层提供端到端的可靠数据传输服务。它为会话层屏蔽了传输层一下的数据通信的细节,使会话层不受到下3层的技术变化的影响。
5.会话层(Session Layer)
会话字面意思就是“对话和交谈”,建立一个逻辑上的连接。它的主要功能使在两个结点间建立、维护和释放面向用户的连接,并对会话进行管理和控制( 允许信息同时双向传输或任一时刻只能单向传输 ),保证会话数据可靠传输。会话层还提供了同步服务, 例如,正在下载一个100MB的文件,当下载到95MB时,网络断线了, 为了解决这个问题,便用到了会话层的同步服务,通过在数据流中定义检查点(Checkpoint)来把会话分割成明显的会话单元。当网络故障出现时,将仅重传最后一个检查点以后的数据即可。
6.表示层(Presentation Layer)
表示层负责在不同的数据格式之间进行转换操作,以实现不同计算机系统间的信息交换。每台计算机可能有它自己的表示数据的内部方法,例如,IBM主机使用EBCDIC编码,而大部分PC机使用的ASCII码。在这种情况下,便需要表示层来完成这种转换,简单的理解就是“一种通用的数据格式”。
表示层还负责数据的加密,以在数据的传输过程中对其进行保护。数据在发送端被加密,在接收端被解密。使用加密密钥来对数据进行加密和解密。同时还负责文件的压缩,通过算法来压缩文件的大小,降低传输费用。
7.应用层(Application Layer)
应用层是OSI参考模型中最靠近用户的一层,负责为用户的应用程序提供网络服务。比如常见的文件传输服务(ftp)、电子邮件服务(SMTP)、超文本传输服务(HTTP)
总结
- 物理层:解决计算机之间的连接、光电信号传输问题
- 链路层:解决物理层传输数据的正确性问题
- 网络层:解决寻址和最佳路由选择问题
- 传输层:上三层已经完成计算机到计算机的连接、数据传输,传输层解决计算机具体端口到端口的连接、数据传输
- 会话层、表示层:在实际实现中,揉进了应用层中,例如 Tomcat
- 应用层:提供具体的网络服务
分层的好处是解耦,每层只需要完成自己负责的事情就行,之后各层可以独立升级换代。
链路层、网络层、传输控制层一般由内核实现,程序员只需要关心应用层,根据具体的协议,完成数据的封装即可。
TCP 协议
TCP/IP 模型
目前实际使用的网络模型是 TCP/IP 模型,它对 OSI 模型进行了简化,只包含了四层,从上到下分别是应用层、传输层、网络层和链路层,每一层都包含了若干协议。
TCP/IP 模型包含了 TCP、IP、UDP、Telnet、FTP、SMTP 等上百个互为关联的协议,其中 TCP 和 IP 是最常用的两种底层协议,所以把它们统称为“TCP/IP 协议族”。也就是说,“TCP/IP模型”中所涉及到的协议称为“TCP/IP协议族”。
三次握手与四次挥手
TCP 协议是面向连接的可靠的传输协议。
从上面的定义中可以分析出,TCP 协议最重要的两个组成部分:连接、传输。连接又可以再细分为两类:建立连接与断开连接。
TCP 协议通过三次握手建立连接,三次握手示意图:
三次握手是客户端和服务端互相确认对方的数据发送、接收能力的过程。之所以是三次,是因为分别站在客户端和服务端的立场上,确认对方的收发能力各自需要两次握手,总共加起来是三次。
三次握手完毕之后,客户端和服务端会各自在内存中开辟资源,资源的开辟代表连接。
建立连接之后,应用层就可以在连接之上进行数据传输(Socket)。所以,建立连接和应用层没有任何关系。
等待数据传输完毕后,客户端和服务端会断开连接。此时需要通过四次分手来断开连接。
TCP的三次握手、四次挥手--非常详细讲解
Socket
Socket 是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。
Socket 的关键点是四元组,即计算机 A 的 ip + port 与 计算机 B 的 ip + port。
一台计算机有 65535 (2 的 16 次方)个端口,其中 1000 以下的端口号由系统使用。
所以从理论上来说,两台计算机之间可以有 65535 * 65536 个连接。
几个定义:
- IP地址:即依照TCP/IP协议分配给本地主机的网络地址,两个进程要通讯,任一进程首先要知道通讯对方的位置,即对方的IP。
- 端口号:用来辨别本地通讯进程,一个本地的进程在通讯时均会占用一个端口号,不同的进程端口号不同,因此在通讯前必须要分配一个没有被访问的端口号。
- 连接:指两个进程间的通讯链路。
- 半相关:网络中用一个三元组(协议 + 本地地址 + 本地端口号)可以在全局唯一标志一个进程。这样一个三元组,叫做一个半相关,它指定连接的每半部分。
- 全相关:一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议。也就是说,不可能通信的一端用TCP协议,而另一端用UDP协议。因此一个完整的网间通信需要一个五元组(协议,本地地址,本地端口号,远地地址,远地端口号)来标识。这样一个五元组,叫做一个相关(association),即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成一连接。
socket编程到底是什么? - 知乎
TCP/IP、HTTP、socket 这些,你真的了解吗?
socket编程入门:1天玩转socket通信技术(非常详细)
最后
以上就是冷傲唇膏为你收集整理的Web 开发基本概念OSI 7 层参考模型TCP 协议Socket的全部内容,希望文章能够帮你解决Web 开发基本概念OSI 7 层参考模型TCP 协议Socket所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复