Linux网络编程(IP地址,端口,通信协议,网络字节序)
Posted AllenSquirrel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络编程(IP地址,端口,通信协议,网络字节序)相关的知识,希望对你有一定的参考价值。
-
网络概念
局域网,城域网,广域网:根据覆盖范围进行的网络划分
互联网(因特网):国际性更大范围的广域网
以太网,令牌环网:组网方式
-
IP地址
IP地址,是用来标识网络中不同主机地址(每一台主机的唯一标识)
ipv4:无符号4字节 32位标识
- DHCP :动态分配IP地址 原则:上网才分配
- NAT:私网地址转换
ipv6:无符号16字节 128位标识
网络通信的每一条数据中都会有两个信息:源端ip地址+对端ip地址
-
端口
端口:(无符号2字节 16位标识)在一台主机上用于标识一个进程
收到网络中一条数据,端口决定这条数据由当前主机上哪一个进程进行处理
网络通信的每一条数据中都会有两个信息:源端端口+对端端口
一个端口只能被一个进程占用,一个进程可以使用多个端口
综上:网络通信的每一条数据包含 sip+sport+dip+dsport 从源端到对端
五元组:sip+sport+dip+dsport+protocal(协议) 表示网络中每条数据从哪来,到哪去,中间数据格式协议如何
-
通信协议
网络通信协议:网络传输数据格式的约定
协议分层:在复杂的网络通信环境中,根据服务,以及所使用的协议,将网络通信环境划分多层
OSI七层网络:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层 地址管理及路由选择
- 数据链路层
- 物理层
缺点:OSI七层网络对网络环境的划分过于细致,实现起来难度过大,并不推荐使用,而是采用了TCP/IP五层协议:
TCP/IP五层协议:
- 应用层:负责应用程序之间数据沟通 HTTP/FTP协议
- 传输层:负责应用程序(进程)之间数据传输 TCP/UDP协议
- 网络层:负责地址管理和路由选择 IP协议 设备:路由器
- 链路层:负责相邻设备之间数据传输 以太网协议 设备:交换机
- 物理层:负责物理光电信号传输 以太网协议 设备:集线器
-
数据包封装与分用
根据上图得到数据包封装与分用步骤
-
网络字节序
字节序:CPU在内存中对数据进行存取的顺序
主机字节序种类(大端:低地址存高位 小端:低地址存低位)取决于CPU架构:X86架构(小端)
字节序影响存储单元大于1个字节的数据类型(short 2 int 4 float 4 double 8 long 8...) 单字节存储不会受大小端字节序存储影响 char buf[1024]="abc" 存储顺序还是abc
主机字节序对网路通信的影响:
在网络通信过程中,不同主机字节序的两端主机进行通信造成数据二义 小端字节序可能被另外一台主机解释为大端字节序导致数据传输错误
解决方案:在网络通信协议中订立字节序标准,必须使用指定的字节序标准,确保网络字节序为大端字节序
以上是关于Linux网络编程(IP地址,端口,通信协议,网络字节序)的主要内容,如果未能解决你的问题,请参考以下文章