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) |
提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收 |
4 |
原始套接字(SOCK_RAW) |
可以对较低层次协议如IP,ICMP直接访问 |
1.4 协议protocol
No. |
参数 |
含义 |
1 |
IPPROTO_TCP |
TCP |
2 |
IPPROTO_UDP |
UDP |
1.5 五要素
2.协议
2.1 TCP(Transmission Control Protocol)
特点 |
数据传输方式 |
类比 |
面向连接 |
数据流 |
大巴车(人满发车,定点发车),打电话(确保信息准确送达) |
2.1.1 三次握手/四次挥手
-
作用
通信双方必须互相确定对方的存在
-
TCP连接与断开
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 |
网友评论