1.套接字
1.1 什么是socket
socket是一个编程接口 socket是一种特殊的文件描述符
everything in Unix is a file
1.2 协议域domain
No. 参数 含义 1 AF_INET IPv4 2 AF_INET6 IPv6 3 AF_LOCAL Unix域
1.3 类型type
No. 类型 Type 作用 说明 1 流式套接字 SOCK_STREAM 提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。 TCP协议支持该套接字。 2 数据报套接字 SOCK_DGRAM 提供面向无连接的服务,数据收发无序,不能保证数据的准确到达。 UDP协议支持该套接字。 3 原始套接字 SOCK_RAW 允许对低于传输层的协议或物理网络直接访问 常用于检测新的协议
No. 类型 作用 1 流式套接字(SOCK_STREAM) 提供了一个面向连接,可靠的数据传输服务,数据无差错,无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制 2 数据报套接字(SOCK_DGRAM) 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收 3 原始套接字(SOCK_RAW) 可以对较低层次协议如IP,ICMP直接访问
1.4 协议protocol
No. 参数 含义 1 IPPROTO_TCP TCP 2 IPPROTO_UDP UDP
1.5 五要素
协议 两台电脑或者两台电脑上的软件进行通信,之间需要使用相同的协议 本地地址 本地主机的IP地址 本地端口 软件需要被识别所使用的端口 远程地址 对方主机的IP地址 远程端口 对方主机接收/发送数据的端口
2.协议
2.1 TCP(Transmission Control Protocol)
特点 数据传输方式 类比 面向连接 数据流 大巴车(人满发车,定点发车),打电话(确保信息准确送达)
2.1.1 三次握手/四次挥手
作用 通信双方必须互相确定对方的存在
TCP连接与断开
No. 报文标识 英文 含义 1 SYN synchronous 建立连接 2 ACK acknowledgement 确认 3 FIN finish 结束 4 PSH push 传送 5 RST reset 重置 6 URG urgent 紧急
号码:防止在第一次发送的时候服务端长时间未响应,那颗客户端会继续再发送一个,当服务端接收到这个请求,然后返回一个响应,他会把刚开始建立连接的请求号码加上再返回回来,由客户端确认究竟是哪一次被连接上了,数据被接受到了。这种标记通常占一位,放在一个字节当中的某一位,用来表示正在做什么事
No. 英文 含义 1 Sequence number 顺序号码 2 Acknowledge number 确认号码
下载文件 数据完整性要求高 数据可靠性要求高 传输性能要求低
2.2 UDP(User Datagram Protocol)
特点 数据传输方式 类比 无连接 数据报 出租车(随到随走),发短信(不是关心对方马上收到)
No. 分类 举例 1 单播(unicast) 私聊,爱奇艺视频 2 广播(broadcast) 广告,病毒 3 多播/组播(multicast) 群聊,春晚直播
区别
3.路径
3.1 IP(Internet中主机的标识)
3.1.1 分类
32位(IPV4)/128位(IPV6)
3.1.2 表示形式(常用点分形式)
No. 协议 形式 e.g. 1 IPv4 点分十进制 192.168.0.1 2 IPv6 点分十进制 ::192.168.0.1 3 IPv6 点分十六进制 ::C0A8:0001
3.1.3 特例
No. IP地址 地址类型 作用 1 0.0.0.0 通配地址 主机上所有IP,多网卡共用 2 127.0.0.1 回环地址 本地虚拟接口,无网卡可用,检查本地网络协议 3 255.255.255.255 广播地址 受限广播地址,当前路由器均不转发此类广播 4 XXX.XXX.XXX.255 广播地址 子网广播地址 5 XXX.XXX.255.255 广播地址 全子网广播 6 224.0.0.0~239.255.255.255 组播地址 详细参见组播地址分类
No. 范围 名称 作用 1 224.0.0.0~224.0.0.255 链路组播地址 路由协议和其它用途保留的地址 2 224.0.1.0~238.255.255.255 用户组播地址 用于全球范围(如Internet)或网络协议 3 239.0.0.0~239.255.255.255 本地组播地址 内部使用
3.1.4 域名
DNS(Domain Name System,域名系统),作为域名和IP地址相互映射的一个分布式数据库。
电话号码与人名 IP与域名
3.2 端口(区分一台主机接收到的数据包应该转交给哪个进程来进行处理)
查看端口
netstat –apn
3.3 类比
火车站与站台 飞机场与登机口 公司与办公室 银行与窗口柜台 IP与端口
4.字节序
No. 类型 简写 本质 e.g. 1 大端 BE(big endian) 将高序字节存储在起始地址 IBM、网络 2 小端 LE(little endian) 将低序字节存储在起始地址 Intel
查看当前CPU支持的字节序:lscpu