winsock chapter6 - 地址家族和名字解析

chapter6 - 地址家族和名字解析

本章将一一说明Winsock支持的协议以及各协议如何把一个指定家族的地址解析成网络上一台具体的机器

IP

  • IP协议时无连接的协议
  • TCP/UDP协议依赖于IP协议

TCP

  • TCP(Transmission Control Protocol)
  • 传输控制协议

UDP

  • UDP(User Datagram Protocol)
  • 用户数据报协议
  • UDP能向若干个目标发送数据,接收发自若干个源的数据

AF_INET

  • TCP,UDP都利用IP协议进行数据传输,一般称为 TCP/IP,UDP/IP
  • Winsock通过AF_INET地址家族为IP通信定址

定址

SOCKADDR_IN

struct sockaddr_in{
  short           sin_family;
  u_short         sin_port;
  struct in_addr  sin_addr;
  char            sin_zero[8];
}

sin_family

  • 地址家族字段, AF_INET

sin_port

  • 通信端口字段
  •   已知端口:0 ~ 1023由IANA控制,是为固定服务保留的
    
  • 已注册端口:1024 ~ 49151是IANA列出来的、已注册的端口,供普通用户的普通用户进程或程序使用。
    
  • 动态和私用端口:49152 ~ 65535是动态和(或)私用端口。

sin_addr

  • 表示IP地址的4字节无符号长整数

字节序

  • 网络字节序: 大端序
  • 主机字节序: x86 - 小端序

常用函数

unsigned long inet_addr(const char FAR*cp); //https://msdn.microsoft.com/zh-cn/library/windows/apps/ms738563.aspx

u_long WSAAPI htonl(_In_ u_long hostlong);
//https://msdn.microsoft.com/zh-cn/library/windows/apps/ms738556.aspx

struct hostent* FAR gethostbyname(
  _In_ const char *name
);
//https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms738524(v=vs.85).aspx

posted @ 2017-03-01 10:19  helo_blog  阅读(202)  评论(0编辑  收藏  举报