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

8 篇文章 0 订阅
8 篇文章 0 订阅

该类文章整理于网上搜集的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. 对应层次及功能

  1. 物理层

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

  2. 数据链路层(Data Link Layer)

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

  3. 网络层(Network Layer)

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

  4. 传输层(Transport Layer)

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

  5. 会话层(Session Layer)

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

  6. 表示层(Pressentatian Layer)

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

    7.应用层(Application Layer)

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

3.TCP/IP 四层模型

TCP/IP四层模型是事实上的标准,它对OSI七层模型进行了简化。下面是与OSI模型的比较,图片来自于百度搜索
模型对应关系
*网络借口层又被称为链路层(Link Layer)。

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

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

从上图中我们可以看到的是:
- 两个主机通信的前提是使用一样的协议。
- 在网络分层中,每一层使用不同的协议。
- 每一层不关心另一层的处理与实现。
- 内核当中已经提供了协议栈的实现。

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

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开始。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值