Linux--网络(网络协议,传输及地址管理)
Posted 水澹澹兮生烟.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux--网络(网络协议,传输及地址管理)相关的知识,希望对你有一定的参考价值。
目录
网络解决的问题是牵扯到数据双方的。一定会存在数据发送方和数据接收方。而此时的发送方和接收方就是某一个进程。网络解决的不同机器之间不同进程的进程通信问题。
一.网络协议
网络协议解决的就是网络双方发送的网络数据格式问题,网络协议本质上就是对发和接受的数据的格式做出约定。
1.1协议分层--OSI七层模型
OSI七层模型是一个理论模型在工业当中引用的并不是很广泛。他包含物理层,数据链路层,网络层,传输层,会话层,表示层和应用层(物数网传会表应)。
- 物理层:他负责将数据转换成光电信号,将光电信号转换成二进制数据。实际最终信号的传输是通过物理层实现的。典型设备:集线器。
- 数据链路层:他负责相邻设备之间的传输。他将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检验。典型设备:交换机。
- 网络层:他通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,他负责地址管理和路由选择。选择合适的路由和交换节点,正确的按照地址传输给目的端的传输层。典型设备是路由器。
- 传输层:他负责端与端之间的传输。传输层的作用是为了上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等。
- 会话层:他就是负责建立,管理和终止表示层实体之间的通信会话。不同设备中的应用程序之间的服务请求和响应组成了会话层的通信。
- 表示层:他提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层所识别。
- 应用层:他是为计算机用户提供应用接口,也为用户直接提供各种网络服务。
OSI七层模型各层的功能定义:
1.2协议分层--TCP/IP五层/四层模型
TCP/IP模型如果是按五层模型的话自底向上是物理层,数据链路层,网络层,传输层,应用层;如果是四层模型的话就不算物理层。应用层代码就是程序员完成的代码,而剩下的四层传输层,网络层,数据链路层和物理层的代码在内核当中的网络协议栈就将已完成代码。
两种协议分层的对比
OSI七层模型 | TCP/IP模型 | 对应的网络协议 |
物理层 | 数据链路层 | IEEE802.1A,IEEE 802.2到IEEE802.11,以太网协议 |
数据链路层 | FDDI , Ethernet(以太网协议) , Arpanet , PDN , SLIP , PPP | |
网络层 | 网络层 | IP,ICMP,RARP,AKP,UUCP |
传输层 | 传输层 | TCP,UDP |
会话层 | 应用层 | SMTP,DNS |
表示层 | Telent,Rlogin,SNMP,Gopher | |
应用层 | HTTP,TFTP,FTP,NFS,WAIS,SMTP |
二.网络传输基本流程
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息. 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理。
2.1数据封装
数据在发送的过程中是数据封装的过程,如下图是数据封装的过程:
现在在应用层产生了一个数据A,在应用层有可能会给传输的数据加上所使用的的APP的首部,然后传输到传输层;传输层在这里打上传输层的TCP首部/UDP首部(看你用的是什么协议)然后将数据交给网络层;网络层在这里打上IP的头部,然后将整个数据再递交给数据链路层;数据链路层再打上以太网头部和以太网尾部,然后将数据递交给物理层,物理层将其处理成光电信号传输给对端,对端物理层进行接收。
2.2数据分用
数据的分用就是当前已经传输过来的数据进行分用,也就是上图的逆转,进行层层分用。物理层将传输过来的数据转化成二进制数据,然后递交给数据链路层;数据链路层拿到数据之后去掉以太网头部与尾部,将中间的数据递交给网络层;网络层拿到数据去掉IP首部然后传递给传输层;传输层去掉传输层头部递交给应用层;应用层的去掉自己APP的包头,然后得到原始数据。
三.网络中地址管理
3.1IP地址
IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4。
- IP地址作用:他是在IP一种用来标识网络中不同主机的地址
- IP地址的本质:对于IPv4来说, IP地址是一个4字节, 32位的整数
- IP地址的表现形式:我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个 字节, 范围是 0 - 255
注意:机器获取的IP地址并不是固定的,他是动态的。我们在解决IP地址枯竭的问题上我们有两个协议,一个是动态主机分配协议(DHCP),谁上网给谁分配IP;另一个是地址转换协议。
3.2MAC地址
- MAC地址作用:他是数据链路层相连的设备进行互相识别
- MAC地址本质:它的长度为48位,也就是说6个字节
- MAC地址表现形式:16进制数字加上冒号的形式来表示
注意:他在出厂时由网卡厂商分配,为固定形式,一般是不可以修改的
四.端口
- 端口的作用:在一台机器上,一个端口可以唯一标识一台进程。所以当网络数据到达网络协议栈之后,可以通过端口信息确认该条消息是发送给哪一个进程的。
- 端口的本质:它的本质其实是一个uint16_t的整数(0~65535)
注意:一个端口只能被一个进程所绑定,但是一个进程可以绑定多个端口,IP+port就可以在网络当中唯一定位一台主机当中的一个进程了。
知名端口:0~1023,这个范围内的端口已经被一些知名的协议或者程序所使用了。
http:80 https:443 ssh:22 oracle:1521 mysql:3306
以上是关于Linux--网络(网络协议,传输及地址管理)的主要内容,如果未能解决你的问题,请参考以下文章