Linux — 网络基础一

协议

网络中主机之间进行通信必须使用相同的协议,协议可理解为“规则”,是数据传输和数据的解释的规则。
协议就是一个相互能够识别的约定,在网络中因为主机设备的生产厂商很多,每个厂商如果都使用自己的协议进行通信,那么导致网络上主机间无法正常通信,这个时候需要某些大型组织来设计一个标准的协议,然后各个厂商都使用这个协议进行通信,这个时候就能实现网络全覆盖通信。
网络间的数据传输就必须使用同一个标准协议——网络通信协议
在网络通信中,因为应对场景不同,因此协议也相对特别复杂,并且很多,为了使用更加方便,因此就有了协议的封装/分层。
协议的封装/分层: 按照各个协议不同的功能以及不同的应对场景对不同的协议进行了分层,在某种特定环境下如果协议的分层清晰明了,那么使用/替换起来就更加方便了。

OSI网络互联七层参考模型

应用层: 针对特定应用的协议
表示层: 设备固有数据格式和网络标准数据格式的转换
会话层: 通信管理,负责建立和断开通信连接(数据流动的逻辑通路。管理传输层以下的分层
传输层: 管理两个节点之间的数据传输。负责可靠传输(确保数据被可靠的传送到目标地址)
网络层: 地址管理与路由器选择
数据链路层: 互连设备之间传送和识别数据帧
物理层: 以“0”“1”代表电压的高低,灯光的闪灭。界定连接器和网线的规格

TCP/IP五层参考模型

TCP/IP指的是一个协议簇(很多协议),因为TCP协议和IP协议是最典型的两个协议,因此这个协议蔟就拿这两个协议名字进行命名了
应用层: 负责应用程序间的数据沟通
传输层: 负责端与端之间的数据传输
网络层: 负责地址管理和路由选择
数据链路层: 负责相邻设备节点之间的数据传输
物理层: 负责广电信号的传输

数据的传输流程

在这里插入图片描述

IP地址

唯一定位网络上的一台主机 无符号四字节的整数(unit32_t)

端口

标识一台主机上的进程 无符号两个字节的数据(unit16_t)
进程的标识为什么不使用pid——进程的pid会随着进程的创建而改变
一条通信包含(五元组)

  • sip 源IP地址
  • sport 数据从哪来
  • dip 目标地址
  • dport 数据到哪去
  • proto 协议
    ip地址+ 端口号可以定位网络上的一台主机的进程

网络字节序——大小端字节序

不同字节序之间进行数据传输,将造成数据的逆序,也就是说,得不到真正发送的数据。
在网络间进行通信的时候必须使用大端字节序——网络字节序,也就意味着如果电脑是小端字节序,那么通信的时候需要对数据逆序。但是并不是所有数据都有需要逆序,主要针对在内存中存储是占据字节大于1个字节的数据。针对这些数据,因为在内存的存储跟展示的刚好顺序相反,而发送的时候,按字节发送,对方按字节接受,那么如果是大端,因为低地址存高位,因为存储顺序和使用顺序完全相同,导致数据跟实际像发送的数据顺序刚好相反,因此需要进行字节逆序转换(小端发送给大端)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值