网络编程(网络基础、套接字编程、高级IO)

网络基础1

网络的划分

  • 局域网(覆盖范围在1000m内)
  • 城域网(覆盖范围在20㎞内)
  • 广域网(覆盖范围大于20km),(互联网 / 因特网是更大的国际性的广域网- - - 容灾性更强,以太网 / 令牌环网 是组网方式)

IP地址

uint32_t - - - 无符号4个字节的整数

1、在网络中作为主机的唯一标识,网络中主机之间的定位(哪个主机与哪个主机之间进行通信),通过IP地址进行标识。
2、网络中每条数据中都会包含:源端的IP地址 / 对端的IP地址;
3、ipv4 : uint32_t - - -DHCP/NAT
ipv6 : uint8_t addr[16] - - - 推广度还很低

端口号

uint16_t - - -无符号2个字节的整数

在一台主机上唯一标识一个进程 - - - - 编写通信程序的时候,必须告诉计算机,发往哪个端口的数据应该交给我处理;

一个端口只能被一个进程占用,然而一个进程可以使用多个端口

在网络通信的每条数据中,都会包含有 源端端口 / 对端端口 - - - 标识了这个数据从哪个进程发送出来,要交给哪个进程处理。

网络通信协议

网络通信证的数据格式约定,遵循统一通信协议标准,才能实现实质通信,实现网络互联

协议分层

根据通信场景的不同,提供的服务不同,使用的协议不同进行的层次划分

典型协议分层
OSI七层参考模型:应用层、表示层、会话层、传输层、网络层、链路层、物理层。
TCP/IP五层模型:应用层、传输层、网络层、链路层、物理层。

  • 应用层:负责应用程序之间如何沟通;HTTP / FTP / DNS / DHCP…
  • 传输层:负责进程之间的数据传输; TCP / UDP
  • 网络层:负责地址管理与路由选择; IP / 路由器
  • 链路层:负责相邻设备之间的数据传输; 以太网协议 / 交换机
  • 物理层:负责物理光电信号的传输; 以太网协议 / 集线器

网络通信数据的封装与分用流程

在这里插入图片描述
**主机字节序:一个主机字节序的大小端取决于cpu架构 - - - X86 / MIPS **
int a =0x 01 02 03 04 -> 高位 000000001 00000010 00000011 00000100 低位
uchar *b = (uchar *)&a 内存低地址 b[0] b[1] b[2] b[3] 内存高地址
大端字节序:低地址存高位 b[0]=01、 b[1]=02、 b[2]=03、 b[3]=04
小端字节序:低地址存低位 b[0] =04、 b[1]=03、 b[2]=02、 b[3]=01

主机字节序跟网络通信的关系:不同主机字节序的主机进行通信容易造成数据二义性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章