0%

C++网络编程(1)

网络编程(1)

一. 网络基础知识

1. 网络分层

  1. 四层
    1. 应用层
      1. ping
      2. telent
      3. OSPF
      4. DNS
    2. 传输层
      1. TCP
      2. UDP
    3. 网络层
      1. ICMP
      2. IP
    4. 数据链路层
      1. ARP
      2. Data Link
      3. RARP
  2. 七层
    1. 应用层
    2. 表示层
    3. 会话层
    4. 传输层
    5. 网络层
    6. 数据链路层
    7. 物理层

      2. IP地址

  3. ipv4
    1. 点分十进制,每段一字节
    2. 四字节
  4. ipv6
    1. 冒号分隔16进制,每段二字节
    2. 十六字节

      3. 端口

      16位整数(0-65535)

      4. 字节序

  5. 大端(网络字节序)
    1. 高位地址存低位数据
  6. 小端(主机字节序)
    1. 高位地址存高位数据

      4.1 转序函数

      1. 整数转序
      1
      2
      3
      4
      5
      #include <arpa/inet.h>
      htons() //16位主机到网络(序)转换
      htonl() //32位主机到网络(序)转换
      ntohs() //16位网络到主机(序)转换
      ntohl() //32位网络到主机(序)转换
      2. IP地址转序
      1
      2
      3
      4
      inet_pton(地址类型,地址字符串,用于输出的内存指针) \\IP地址转网络序
      inet_ntop(地址类型,网络序字符串,用于输出的字符串指针,字符串指针指向内存的大小) \\网络序转IP地址,调用成功返回字符串指针,失败返回null
      inet_addr(字符串) \\IP转网络序(仅ipv4)
      inet_ntoa(结构体) \\网络序转ip(仅ipv4)
  • 地址类型:AF_INET(ipv4),AF_INET6(ipv6)