网络协议
Internet是由各种不同类型、不同规模、独立管理和运行的主机或计算机网络组成的一个全球性特大网络。网络之间的机器要通信势必需要有一套统一的协议,基于协议来传输解析,机器之间才能实现信息交换。
Internet使用的网络协议是TCP/IP协议,凡是连入Internet的计算机都必须安装和运行TCP/IP协议软件。具体的网络协议有:TCP/IP、UDP、HTTP、telnet、ftp、SMTP等,而他们又分别作用于不同的网络层的。
网络互连架构模型(OSI)
OSI(Open System Interconnect)开放式系统互联。一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互连的七层框架,从下到上依次是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,每一层都有详细的功能定义,以实现开放系统环境中的互连性、互操作性和应用的可移植性。
图三:TCP/IP参考模型与OSI参考模型的对照
TCP/IP协议
TCP/IP包括四层:应用层,网络层(又有TCP和UDP两种),传输层,物理链路层。
UDP是网络层的一种传输方式,面向无连接,不可靠。
TCP和UDP的详细区别:
1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。
2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。知道了TCP和UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,因为程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证等等。即使是这样,UDP因为在底层协议的封装上没有采用类似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连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
超文本传输协议HTTP(HyperText Transfer Protocol)
是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP协议属于TCP/IP协议组,是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用,是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。
HTTP是一个无状态的协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则必须重传,这样可能导致每次连接传送的数据量增大。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。每次连接只处理一个请求。
其定义的事务处理由以下4个步骤组成:
(1)客户端与服务器建立连接;
(2)客户端向服务器提出请求;
(3)如果请求被接受,则服务器送回响应,在响应中包括状态码和所需的文件;
(4)客户端和服务器断开连接。
客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。
与HTTP相似的协议HTTPS是安全的超文本传输协议(更安全可靠)。
HTTP和HTTPS都是应用层的,他两都用TCP传输方式来传输。
HTTP协议详解请参见QC“公共用例库-【1】web测试框架库-文档库”中下载
“HTTP协议详解.pdf”文件
其他应用层协议(以下协议均属于TCP/IP协议组,都基于TCP协议)
ftp——文件传输协议。是 TCP/IP 协议组中的协议之一。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。两种传输方式要注意文件传输后有可能不可用,最好在拷贝任何非文本文件之前,用binary命令告诉ftp逐字拷贝,不要对这些文件进行处理。
SMTP——简单邮件传输协议。是一种提供可靠且有效电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供与来信有关的通知。使用TCP协议25号端口。
telnet——远程登录协议。用户可以通过用Telnet连入某个主机 ,成为该主机的终端而访问各种所需的信息,或运行远程主机上的程序来求解各种复杂的问题。
网络中各个协议之间的区别和关系
上一段说到整个网络按OSI模型由下往上分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
我们通常说的TCP\IP协议中的IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,socket则是对TCP/IP协议的封装和应用(程序员层面上)。
也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。
关于TCP/IP和HTTP协议的关系,可以这样理解:
“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。如果想要使传输的数据有意义,则必须使用到应用层协议。
应用层协议有很多,比如HTTP、FTP、TELNET、SMTP等,也可以自己定义应用层协议。
WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”
而我们平时说的最多的socket是什么呢?实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。通过Socket,我们才能使用TCP/IP协议。
实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、listen、connect、accept、send、read和write等等。
我们可以这样理解:“TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。”
优质内容筛选与推荐>>