一、网络七层模型
20世纪70年代中,为了优化数据库系统设计,支持数据库系统的访问,美国的一个互联网研究小组提出了一个结构化的分布式通信系统体系结构(共七层),他们内部称之为分布式系统体系结构(DSA),1977年英国标准化协会向国际标准化组织(ISO)提议,为了定义分布处理之间的通信基础设施,需要一个标准的体系结构。后来,ISO就开放系统互联(OSI)问题成立了一个专委会(TC 97, Subcomittee 16),指定由美国国家标准协会(ANSI)开发一个标准草案。1978年3月,在ISO的OSI专委会在华盛顿召开的会议上,与会专家很快达成了共识,认为这个分层的体系结构能够满足开放式系统的大多数需求,而且具有可扩展的能力,能够满足新的需求。于是,1978年发布了这个临时版本,1979年稍作细化之后,成了最终的版本。
七层模型内容如下,左侧列出的是简化后的四层模型。
实体层:连接网络的硬件设备,就是将电脑连接起来的物理手段. 如光缆/电缆/无线电波
数据链路层 (Link):建立逻辑连接、进行硬件地址寻址、差错校验等功能,如32位和64位计算机,他们的解码方式是不一样的,数据链路层就规定个二进制数据的解读方式。
网络层 (Network):进行逻辑地址寻址,实现不同网络之间的路径选择。网络层建立了主机之间的通信,它在网络层引入了一套地址机制:网络地址.简称网址(Ip地址),我们可以通过Ip地址,可以找到唯一的一台计算机,通过主机MAC地址来接收和发送信息.
传输层 (Transport):定义传输数据的协议端口号,以及流控和差错效验,定义了端口和端口之间的通信,帮助我们使不同的应用程序能够接收到自己所需要的的数据。
会话层(Session Layer):包括建立、管理、终止会话,用来建立和管理应用程序之间的通信,实现自动寻址,自动收发数据。
表示层(Presentation Layer):数据的表示、安全、压缩。比如我们要用基于Unix系统的mac电脑给pc机发送数据,表示层为我们解决了通信间语法的问题。
应用层 (Application):网络服务与最终用户的一个接口。比如不同的文件类型要用不同的应用程序打开,应用层中就规定了不同应用程序的数据格式.
二、IP,TCP,UDP,HTTP,TCP/IP,Socket
IP协议,为计算机网络相互连接进行通信而设计的协议。
TCP/UDP协议,基于二进制流的控制间传输协议。 TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。
HTTP协议,超文本传送协议(Hypertext Transfer Protocol ),HTTP协议是建立在TCP协议之上的一种应用。
IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层。注意TPC/IP位于传输层,它主要用来解决数据如何在网络中传输,与IP协议要区分开。
IP协议规定网络之间互连的协议;TPC/IP协议是传输层协议,主要解决数据如何在网络中传输;HTTP是应用层协议,主要用于包装数据。
Socket相当于调用接口(API),用来调取TCP/IP协议。
三、使用Socket建立网络
网络上两个程序通过双向通信实现数据交换,socket又叫套接字,每个应用程序开启后,都会在传输层端口上绑定一个socket,不同应用程序之间通过寻找端口找到socket实现数据通信。
Socket连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
1、服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
2、客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
3、连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。