网络编程
- 通过操作相应 API 调度计算机硬件资源,并利用传输管道(网线)进行数据交换的过程;
Socket 是什么
- 简单来说是 IP 地址与端口的结合协议(RFC 793);
- 一种地址与端口的结合描述协议;
- TCP/IP 协议的相关 API 的总称;是网络 API 的集合实现;
- 涵盖了 Stream Socket / Datagram Socket;
Socket 的作用与组成
- 作用:在网络传输中,用于唯一标识两个端点[1]之间的连接,这种连接不是物理层面的,不一定时时刻刻是连接的;
- 组成(4要素):客户端地址、客户端端口、服务端地址、服务端端口;
Socket 之 TCP
- TCP 是面向连接的通信协议;
- 通过 3 次握手建立连接,通讯完成时要拆除连接;
- 由于 TCP 是面向连接的,所以只能用于端到端的通讯,在和一端通讯的同时,不能和其他端通讯;
Socket 之 UDP
- UDP 是面向无连接的通讯协议;
- UDP 数据包括目的端口号和源端口号信息;
- 由于通讯不需要连接,所以可以实现广播发送,并不局限于端到端;
报文段
- 报文段在 TCP/IP 协议的网络传输过程中,起着路由导航的作用;
- 用以查询各个网络的路由网段,IP地址,交换协议等 IP 数据包;
- 报文段充当整个 TCP/IP 协议数据包的导航路由功能;
- 报文在传输过程中会不断的封装成:分组、包、帧来传输;
- 封装方式就是添加一些控制信息组成首部,即报文头;
IPv4
- 总数量:4294967296(42亿)个,于2011年2月3日用尽;
- 1.1.1.1:直接广播地址,往这个地址发 UDP ,整个互联网都能收到,但实际上,受限于区域的防火墙;
-
- 255.255.255:受限广播地址,往这个地址发 UDP,整个局域网都能收到;
IPv6
- 共 128 位长,表现形式一般采用32个十六进制数;
- 由两个逻辑组成部分:一个 64 位的网络前缀和一个 64 位的主机地址,主机地址通常根据物理地址自动生成;
- IPv4 一定可以转换成 IPv6,IPv6 转换成 IPv4 不一定可行;
端口
- 端口总数 65536 个,但是一台计算机能建立的连接不是只能有 65536 个,每个 IP 对应 65536 个端口,如果计算机有多个 IP ,就可以建立多于 65536 个连接;
-
IP + Port; ↩