I. Giao diện lập trình
I.3.2. Địa chỉ Socket
Có hai loại địa chỉ được gán với một socket: Địa chỉ local và địa chỉ TCP/IP. Địa chỉ này được khai báo là những bản ghi và được dùng làm tham số cho những lệnh hệ thống và thủ tục truy nhập socket. Địa chỉ local là địa chỉ để xác định socket trong nội bộ máy.
Cấu trúc địa chỉ cục bộ được mô tả như sau
Address family Address bytes 0-1 Address bytes 2-5
Address bytes 6-9 Address bytes 10-13 struct sock_addr
{
u_short sa_family; /* address family */
char sa_data[14]; /* up to 14 bytes address */ };
Trường address family sẽ quyết định cấu trúc địa chỉ của trường Address bytes phía sau vì socket hỗ trợ cho nhiều giao thức khác nhau nên ứng với mỗi giao thức trường địa chỉ sẽ có cấu trúc khác nhau.
Protocol family Description
PF_UNSPEC Unspecified family
PF_UNIX UNIX domain
PF_INET Internet protocols PF_IMPLINK Arpanet IMP address
PF_PUP Old Xerox protocols
PF_CHAOS M.I.T. CHAOS protocols
PF_NS Xerox Network system protocols
PF_NBS NBS protocols
PF_ECMA European Computer Manual
PF_DATAKIT DATAKIT protocols
PF_CCITT CCITT protocols
PF_SNA IBM System Network Architeture PF_DECnet DECnet protocols
PF_DLI DEC direct data link interface
PF_LAT LAN terminal interface
PF_HYLINK NSC Hyperchannel
PF_APPLETALK Apple Talk protocols
PF_NIT Network interface tap
PF_802 IEEE 802.2
PF_OSI OSI protocols
PF_X25 CCITT X.25
PF_OSINET OSI protocols
PF_GOSIP U.S.government OSI protocols
Protocol Families
Địa chỉ TCP/IP được khai báo với tên sockaddr_in. Nó chứa số hiệu port và địa chỉ IP 32-bit.
Address family Protocol port IP Address
Unused (0) Unused (0) struct in_addr /* 32-bit IP Addresss */ {
u_long s_addr; /* network byte order */ };
struct sockaddr_in {
short sin_family; /* = AF_INET */
u_short sin_port; /* 16-bit port number */ struct in_addr sin_addr; /* 32-bit IP Addresss */ char sa_zero[14]; /*unused*/
};