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

chapter6 - 地址家族和名字解析

本章將一一說明Winsock支持的協議以及各協議如何把一個指定家族的地址解析成網絡上一臺具體的機器windows

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
相關文章
相關標籤/搜索