好像之前一直没有写过网络相关的文章,导致有时候分不清所涉及的网络协议是在哪层提供支持的,每天的接触新东西,旧的就容易遗忘和混淆。所以还是那句老话,好记忆力不如烂笔头。就将我已经接触到的网络相关知识做一个简单的总结吧。
OSI参考模型
OSI参考模型是ISO的建议,它是为了使各层上的协议国际标准化而发展起来的。OSI参考模型全称是开放系统互连参考模型(Open System Interconnection Reference Model)。这一参考模型共分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
因为从下往上,底层都是为上层提供支持和服务的,因此从下往上来看看各个层次的功能:
物理层(Physical Layer)主要是处理机械的、电气的和过程的接口,以及物理层下的物理传输介质等。
数据链路层(Data Link Layer)的任务是加强物理层的功能,使其对网络层显示为一条无错的线路。
网络层(Network Layer)确定分组从源端到目的端的路由选择。路由可以选用网络中固定的静态路由表,也可以在每一次会话时决定,还可以根据当前的网络负载状况,灵活地为每一个分组分别决定。
传输层(Transport Layer)从会话层接收数据,并传输给网络层,同时确保到达目的端的各段信息正确无误,而且使会话层不受硬件变化的影响。通常,会话层每请求建立一个传输连接,传输层就会为其创建一个独立的网络连接。但如果传输连接需要一个较高的吞吐量,传输层也可以为其创建多个网络连接,让数据在这些网络连接上分流,以提高吞吐量。而另一方面,如果创建或维持一个独立的网络连接不合算,传输层也可将几个传输连接复用到同一个网络连接上,以降低费用。除了多路复用,传输层还需要解决跨网络连接的建立和拆除,并具有流量控制机制。
会话层(Session Layer)允许不同机器上的用户之间建立会话关系,既可以进行类似传输层的普通数据传输,也可以被用于远程登录到分时系统或在两台机器间传递文件。
表示层(Presentation Layer)用于完成一些特定的功能,这些功能由于经常被请求,因此人们希望有通用的解决办法,而不是由每个用户各自实现。
应用层(Application Layer)中包含了大量人们普遍需要的协议。不同的文件系统有不同的文件命名原则和不同的文本行表示方法等,不同的系统之间传输文件还有各种不兼容问题,这些都将由应用层来处理。此外,应用层还有虚拟终端、电子邮件和新闻组等各种通用和专用的功能。
快速记忆就是:应表会传网数物
TCP/IP参考模型
TCP/IP参考模型是首先由ARPANET所使用的网络体系结构。这个体系结构在它的两个主要协议出现以后被称为TCP/IP参考模型(TCP/IP Reference Model)。这一网络协议共分为四层:网络访问层、互联网层、传输层和应用层。(这个咱们就别快速记忆了,理解记忆吧,因为实际中我们遇到的基本都是这个模型)
同样自下而上的功能分别为:
网络访问层(Network Access Layer)在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。(网络接口层)
常见的接口层协议有:Ethernet 802.3、Token Ring 802.5、X.25、Frame
relay、HDLC、PPP ATM等。
互联网层(Internet Layer)是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。互联网层使用因特网协议(IP,Internet Protocol)。TCP/IP参考模型的互联网层和OSI参考模型的网络层在功能上非常相似。(网络层)
网络层包括:IP(Internet Protocol)协议、ICMP(Internet
Control Message Protocol)
控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。
IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层。IP数据报是无连接服务。
ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。
Ping命令就是发送ICMP的echo包,通过回送的echo
relay进行网络测试。(CVE-2015-3636,给懂得人~)
传输层(Tramsport Layer)使源端和目的端机器上的对等实体可以进行会话。在这一层定义了两个端到端的协议:传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP是面向无连接的不可靠传输的协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。(传输层)
应用层(Application Layer)包含所有的高层协议,向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。(应用层)
应用层协议主要包括如下几个:FTP、TELNET、DNS、SMTP、NFS、HTTP。
FTP(File Transfer Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。
Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换,使用端口53。
SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转,使用端口25。
NFS(Network File System)是网络文件系统,用于网络中不同主机间的文件共享。
HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于实现互联网中的WWW服务,使用端口80。
这些端口,最好记住,因为我遇到过这样的题~~(做项目和笔试感觉还是两码事儿,做项目的时候很熟练的东西,到了答题就感觉很奇怪或者忘记了细节。)
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。下面这幅图很好的帮助记忆和理解各个协议在TCP/IP模型中的之间的关系。
总结:对于网络的层次关系和协议的理解,无论是在unix编程中还是在Android的编程中都是一样的,可能就只是网络相关API的不同吧。因此,首先有一个网络全局观会对后面文章中的细节理解有一个俯视的姿态。请关注后续文章...