socket链接

ARP: address resolve protocol.地址解析,用IP找MAC,MAC找IP。
RARP: reserve address resolve protocol.逆地址解析,无盘工作站向网络管理找自己的IP/MAC。

ICMP:Internet Control Message Protocol.     ping
DNS: domain name system.用域名找IP。
MTU: max transmission unit.一个socket最大可传送单位包大小。
URL: uniform resource locator.
URG: 紧急,代外数据

tcp:
server: socket     bind     listen     accept     send/recv
cliant: socket              connect               send/recv

udp:
server: socket     bind     sendto/recvfrom
cliant: socket              sendto/recvfrom
他们在建立socket的时候有所不同:域都是:PF_INET;类型:SOCK_STREAM(流服务,TCP),SOCK_DGRAM(数据包,UDP);协议一般默认0。
地址:sockaddr_in.

混杂模式:PF_PACKET,SOCK_RAW,//看混杂模式篇
地址:sockaddr_ll。

struct sockaddr_ll
{
unsigned short int sll_family; /* 一般为AF_PACKET */
unsigned short int sll_protocol; /* 上层协议 */
int sll_ifindex; /* 接口类型 */
unsigned short int sll_hatype; /* 报头类型 */
unsigned char sll_pkttype; /* 包类型 */
unsigned char sll_halen; /* 地址长度 */
unsigned char sll_addr[8]; /* MAC地址 */
};


struct ifreq //网络接口结构
{
#define IFHWADDRLEN 6
 union
 {
  char ifrn_name[IFNAMSIZ];  
 } ifr_ifrn;
 
 union {
  struct sockaddr ifru_addr;
  struct sockaddr ifru_dstaddr;
  struct sockaddr ifru_broadaddr;
  struct sockaddr ifru_netmask;
  struct  sockaddr ifru_hwaddr;
  short ifru_flags;
  int ifru_ivalue;
  int ifru_mtu;
  struct  ifmap ifru_map;
  char ifru_slave[IFNAMSIZ];
  char ifru_newname[IFNAMSIZ];
  void __user * ifru_data;
  struct if_settings ifru_settings;
 } ifr_ifru;
};

#define ifr_name ifr_ifrn.ifrn_name
#define ifr_hwaddr ifr_ifru.ifru_hwaddr
#define ifr_addr ifr_ifru.ifru_addr
#define ifr_dstaddr ifr_ifru.ifru_dstaddr
#define ifr_broadaddr ifr_ifru.ifru_broadaddr
#define ifr_netmask ifr_ifru.ifru_netmask
#define ifr_flags ifr_ifru.ifru_flags
#define ifr_metric ifr_ifru.ifru_ivalue
#define ifr_mtu  ifr_ifru.ifru_mtu
#define ifr_map  ifr_ifru.ifru_map
#define ifr_slave ifr_ifru.ifru_slave
#define ifr_data ifr_ifru.ifru_data
#define ifr_ifindex ifr_ifru.ifru_ivalue
#define ifr_bandwidth ifr_ifru.ifru_ivalue   
#define ifr_qlen ifr_ifru.ifru_ivalue
#define ifr_newname ifr_ifru.ifru_newname
#define ifr_settings ifr_ifru.ifru_settings


TCP状态机

socket链接_第1张图片

3此握手,4次挥手:

listen个数,是指客户端connect的时候到ESTABLISHED状态个数,使用accept减少一个(队列模式)。如设置listen为5个,如果服务器不使用accept,ESTABLISHED状态大约5个,其他应该是返回ECONNREFUSED。即同时接受5个连接。服务器调用accept应该是已经建立了3次握手了。


你可能感兴趣的:(socket链接)