文档介绍:Linux 网络编程
引言
通信协议
通信协议用于协调不同网络、不同系统之间的信息交换。
80年代,随着计算机从奢侈品到家用电器过渡,大家都意识到一台孤立的计算机构成的“孤岛”没有太大意义,于是就想把这些孤立的系统组在一起形成网络,但是各个型号的计算机中却是完全不同的设备与操作系统,这种天下大不统的局面成为这些设备与系统交互的瓶颈,为了解决这样的问题,通信协议应运而生,它为建立设备之间互相识别提供有价值的信息机制。当今通信界有许多可采用协议,如XNS,SNA,TCP/IP等。
TCP/IP协议族,它是非专有网际互联产品。起初,它仅仅是美国政府资助的一个分组交换网络研究项目,但是随着技术的的不断进步,TCP/IP协议族的不断完善,越来越成熟,到今天,它已然发展成计算机之间最常用的组网形式,它成为被称作“全球互联网”或“因特网”的基础。同时,TCP/IP协议也是我们学****网络编程的基础,金字塔的最底层。<br****惯上,我们喜欢把TCP/IP协议族简称之为TCP/IP协议,但他并不是只提供两种协议,实际上它是一个一起工作的通信家族,为网络数据通信提供通路。TCP/IP协议族大体上可以分为三部分:
协议(IP)
传输控制协议(TCP)和用户数据报文协议(UDP)
其它处于TCP和UDP之上的一组专门用于开发的用于程序的如: , FTP , DNS , SMTP等许多协议。
TCP/IP协议( Transmission Control Protocol / Protocol )的广泛使用,使得TCP/IP成了事实上的工业标准。
标准OSI模型与TCP/IP参考模型对照:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
应用层
(、FTP、HTTP、SMTP等)
传输层(TCP、UDP等)
网络层(IP、ICMP、IGMP等)
网络接口层
(本地网络协议)
OSI参考模型
TCP/IP参考模型
分层的结构:
通信协议通常分不同层次进行开发,每一层分别负责不同的通信功能,如图,根据TCP/IP协议参考模型,它通常被认为是一个四层协议的模型。其每一层负责不同的功能:
1 链路层:(对应标准模型的数据链路层与物理层)有时也被称作是网络接口层,通常包含操作系统中的设备驱动程序和计算机中对应的网络接口卡,他们一起处理电缆的物理接口细节。
2. 网络层,(对应标准模型的网络层)有时也称作互联网层,处理来自传输层的分组发送请求,(添加IP报头,封装数据包)处理数据报(拆开数据包,去掉IP报头),处理路由,流控,拥塞等,涉及到的协议有:IP , ICMP , RIP , OSPF , IGMP.
3. 传输层(对应标准模型的传输层)它负责网络主机与主机的通信(或者说是两台主机的应用程序提供端到端的通信)。这一层中,有两个传输协议:TCP和UTP
4. 应用层(对用标准模型的会话层,表示层,应用层三层)提供用户的交互,处理特定应用程序的细节。
协议(IP)
IP是TCP/IP协议族中最为核心的协议。所有的TCP,UDP,ICMP,TGMP数据都以IP数据报格式传输。IP主要负责在源主机和目的主机之间传输来自较高层软件的数据报文(数据块),它在源和目的地之间提供非连接的传递服务。
简单归纳起来,IP主要有以下四个功能:
数据传送;
寻址;
路由选择;
数据报文分段;
数据传送的基本特点(尽最大努力的无连接传送服务)
IP的主要目的是为数据输入、输出网络提供基本办法,为高层协议提供无连接的传送服务。这意味着在IP将数据递交给接受站点以前不在传输站点和接受站点之间建立对话,它只是分装和传递数据,但不向发送者或接受者报告包的状态,不处理所遇到的故障。假如数据链路层遇到(可恢复)的错误时,IP不予以通知和处理,它将报文和错误一起传出去,由高层协议(TCP)负责执行和消除差错。
IP接受并格式化数据,以便传输到数据链路层,此外IP还检索来自数据链路的数据,并将它送给请求的高层,IP传送的信息单位被称之为“数据报文”,一些数据报文被组装起来就称为包。
IP协议不注意包内的数据,它所要做的一切只是将自己的包头加到由上一层协议提供过来的数据上封装数据,或者拆开包头,分析包头内容,并将它传递给网络或者某网际上的某些节点。
如图:帧中的IP头:
我们来详细了解一下IP数据报的格式:
4比特字段的版本:IP协议的版本号,如IPV4,IPV6;
4比特的字段的头长度:即包头长度;在实际中,并是必须使用IP头的所有位,所以需要该字段来指明IP头的长度。
由于它是一个4比特字段,因此整个首部(IP头)的最长为60字节
——以32位表示字(每字32位),4比特的字段从0000到111