socket套接字

传输层:提供进程地址

  • Port     number:

                        tcp:传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路;

0-65535

udpUser Datagram Protocol,无连接的协议;

0-65535

  • IANA:

0-1023:众所周知,永久的分配给固定的应用使用,特权端口,22/tcp(ssh), 80/tcp(http), 443/tcp(https)

1024-41951:亦为注册端口,但要求并不是特别严格,分配给程序注册为某应用使用,11211/tcp, 11211/udp (memcached), 3306/tcp(mysql)

41952+:客户端程序随机使用的端口;动态端口,或私有端口;其范围的定义:/proc/sys/net/ipv4/ip_local_port_range

  • Socket: IPC的一种实现,允许位于不同主机(甚至同一主机)上不同进程之间进行通信;数据交换;Socket API, 1983年,4.2 BSD

SOCK_STREAMtcp套接字

SOCK_DGRAMudp套接字

SOCK_RAW: 裸套接字

  • IPv4:

A1-127

B128-191

C192-223

D:组播,224-239

E240-254

  • 私有地址:

A10.0.0.0/8

B172.16.0.0/16-172.31.0.0/16

C192.168.0.0/24-192.168.255.0/24

  • TCP协议的特性:

建立连接:三次握手

将数据打包成段:校验和(CRC-32)

确认、重传以及超时:

排序:逻辑序号

流量控制:滑动窗口算法

拥塞控制:慢启动和拥塞避免算法

  • Socket     Domain(根据其所使用的地址):

AF_INETAddress FamilyIPv4

AF_INET6IPv6

AF_UNIX:同一主机上不同进程之间通信时使用;

每类套接字都至少提供了两种socket:流,数据报

流:可靠地传递、面向连接、无边界;

数据报:不可靠地传递、有边界、无连接

  • 套接字相关的系统调用:

socket(): 创建一个套接字;

bind():绑定

listen():监听

accept():接收请求

connect():请求连接建立

write():发送

read():接收

send(), recv(), sendto(), recvfrom()




      本文转自echoroot 51CTO博客,原文链接:http://blog.51cto.com/echoroot/1947835,如需转载请自行联系原作者





上一篇:谈谈分布式事务之二:基于DTC的分布式事务管理模型[上篇]


下一篇:How to install GSL on linux(ubuntu,centos,redhat)