您的位置:首页 > 理论基础 > 计算机网络

Linux网络编程学习笔记-TCP/IP基础-1

2017-02-25 02:16 549 查看
该类文章整理于网上搜集的C++编程教程,通过学习该部分内容能够进一步了解计算机网络的相关知识,为自己编程水平更进一层楼。

1.ISO/OSI参考模型

OSI(Open System Interconnection)开放系统互联模型是由ISO(International Organization for Standardization)国际标准化组织定义的网络分层模型,一共7层。下面是OSI参考模型的示意图,图片来自于superjunjin的专栏


<——–每一层单独协议———->


每一层的作用的如下表所示:

层级名称作用传输单位
应用层提供应用程序间通信APDU(Application)
表示层处理数据格式,数据加密等PPDU(Presentation)
会话层建立,维护和管理会话SPDU(Session)
传输层建立端到端链接segment(段)
网络层寻址和路由选择packet(包
数据链路层介质访问,链路管理frame(帧)
物理层比特流传输b(比特)
*PDU(ProtocolDataUnit)

2. 对应层次及功能

物理层

物理层(Physical Layer):物理层定义了所有电子及物理设备的规范,为上层传输提供了一个物理介质,本层的数据传输单位为比特流(b),属于本层定义的规范有EIA/TIA RS-232、EIA/TIA RS-449、V 35、RJ-45等,实际使用中的设备如网卡等属于本层。

数据链路层(Data Link Layer)

数据链路层(Data Link Layer):对物理层收到的比特流进行数据成帧,提供可靠的数据传输服务,实现无差错数据传输。再数据链路层中数据的单位为帧(frame),属于本层定义的规范有SDLCHDLCPPPSTP帧中继等实际使用中的设备如switch交换机属于本层。

网络层(Network Layer)

网络层负责讲各个子网之前的数据进行路由选择,分组与重组。本层中数据的传输单位为数据包(packet)。实际属于本层定义的规范有IPIPX,RIP,OSPF,ICMP,IGMP等。实际使用中的设备如路由器属于本层。

传输层(Transport Layer)

提供可靠的数据传输服务,它检测路由器丢弃的包,然后产生一个重传的请求,能够将乱序收到的数据包重新排序。

会话层(Session Layer)

管理主机之间的会话进程,包括会话建立、终止和会话过程中的管理。

表示层(Pressentatian Layer)

表示层对网络传输的数据进行交换,使得多个主机之间传送的信息能够相互理解,包括数据的压缩,加密,格式转换等。

7.应用层(Application Layer)

应用层与应用程序界面沟通,以达至展示给用户的目的,再次常见的协议有:HTTP,HTTPS,FTPTELNET,SSH,SSH,SMTP,POP3等。

3.TCP/IP 四层模型

TCP/IP四层模型是事实上的标准,它对OSI七层模型进行了简化。下面是与OSI模型的比较,图片来自于百度搜索



*网络借口层又被称为链路层(Link Layer)。

TCP/IP各层中所支持的协议如下图所示,图片来自于草根老师博客(程姚根)



局域网中两个ftp服务器通信的过程如下图所示,图片来自于C++教程网



从上图中我们可以看到的是:

- 两个主机通信的前提是使用一样的协议。

- 在网络分层中,每一层使用不同的协议。

- 每一层不关心另一层的处理与实现。

- 内核当中已经提供了协议栈的实现。

广域网中,数据传输需要经过很多的路由器,这时典型的TCP/IP四层模型如下图所示,图片来自于C++教程网



3.1 对等通信的概念

对等通信是指在TCP/IP协议中,每一层之间采用相同的协议,主机与主机在通信过程中每一层屏蔽了下一层的细节,相同层级层之间的通信像是建立起了虚电路(逻辑流)。

3.2 封装(Encapsulation)的概念

封装是将数据打上对应头部,让对等方知道双方具有一样的语言,交付给下一层进行通信。封装之后对等方就能认识数据,从而能够进行一定的解析。图片来源见图片水印。



与数据封装对应的是数据的解封,也称之为数据的分用。

3.3 分用(Demultiplexing)的概念

数据的分用可以理解为将数据去头转交给对应上层的过程,过程如下图所示。



3.4 端口的概念

IP可以标识一台主机,但是不能标识这台主机上的某一个服务,这个时候就需要用到端口的概念。

1. 总所周知端口(Well Know Ports):从0到1023,这些端口由IANA分配和控制他们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:21端口为ftp服务端口。

2. 注册端口(Registered Port):从1024到49151。那些端口不收IANA控制,但由IANA登记并提供使用情况清单。他们松散地绑定于一些服务。也就是说有许多服务绑定这这些端口,这些端口通用用于许多其他目的。例如:1433 Microsoft SQL服务端口。

3. 动态或私有端口(Dynamic or Private Ports):从49152到65535。IANA不管这些端口。实际上,机器通常从1024起到分配动态端口。但也有路外:SUNde RPC端口从32768开始。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c-c++ 网络编程 linux