分配给套接字的IP地址和端口号

IP->:收发网络网络数据而分配给计算机的值
端口号->:区分程序套接字而分配给程序的序号

网络地址

此部分大家可以自从从网络搜去,本文章只列出网络编程所需要的基本知识。

  • IPV4
  • IPV6

网络地址分类与主机地址边界

  • A 首字节范围:0-127(0)
  • B 首字节范围:128-191(10)
  • C 首字节范围:191-223(110)

用于区分套接字的端口号

  • 端口号与套接字是一一对应关系,端口号与程序的不同通信功能是一一对应关系
  • 同一通信协议端口号不可重复使用
  • 不同协议的端口号可以重复使用(TCP和UDP)

地址的信息表示

下面我们讨论ipv4的地址表示。声明:还是那句话代码很老,没必要记,我们只是通过最原始的代码了解网络编程基础。

struct sockaddr_in
{
      sa_family_t         sin_family;//地址族
      unit16_t            sin_port   //16位TCP/UDP端口号
      struct in_addr      sin_addr   //32位IP地址
      char                sin_zero[8]//不使用为了与bind参数强制转换时地址对齐
}

struct in_addr
{
    int_addr_t    s_addr;
}

struct sockaddr_in serv_addr;
bind(...;(struct sockaddr*)&serv_addr;...)

//sockaddr 定义如下
struct sockaddr
{
    sa_family_t sin_family;
    char        sa_data[14];//地址信息
}

网络字节序与地址转换

字节序与网络字节序

字节序转换

此部分内容大家自行在网络上搜寻即可

数据在传输之前都要经过转换吗

没必要,具体原因之后结合程序详细讲解。

网络地址的初始化与分配

此部分简单了解即可,大部分网络库都给我们封装好了,只不过是一些编程方式,不涉及很多理论知识。

客户端地址初始化

需要注意客户端是通过connect函数初始化服务器端的地址与端口,连接到服务器的ip与端口。


毕明鑫
1 声望0 粉丝