参考引用
实际的应用中更多还是使用 TCP/IP 四层模型
下面是一些特殊的 IP 地址,不能分配给任何一个网络的主机使用
直接广播地址
受限广播地址
多播地址
环回地址
0.0.0.0 地址
如何判断 2 个 IP 地址是否在同一个网段内?
- 可通过网络标识来进行判断,网络标识定义:网络标识 = IP 地址 & 子网掩码
- 2 个 IP 地址的网络标识相同,那么它们就处于同一网络。譬如 192.168.1.50 和 192.168.1.100,这 2 个都是 C 类地址,对应的子网掩码为 255.255.255.0,很明显,这两个 IP 地址与子网掩码进行按位与操作时得到的结果(网络标识)是一样的,所以它们处于同一网络
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于 IP 的传输协议
TCP 协议如何保证可靠传输?
1. 面向连接的
2. 确认与重传
3. 全双工通信
4. 基于字节流而非报文
5. 流量控制(滑动窗口协议)
6. 差错控制
7. 拥塞控制
流量控制是通过接收端来控制流量的一种方式,而拥塞控制则是通过发送端来控制流量的一种方式。TCP 发送端可能因为 IP 网络的拥塞而被遏制,TCP 拥塞控制就是为了解决这个问题
TCP 报文由 TCP 首部 + 数据区域组成,一般 TCP 首部通常为 20 个字节大小,具体格式如下图
1. 源端口号和目标端口号
2. 序号 seq
3. 确认序号 ack
4. 首部长度
5. 六个标志位:URG/ACK/PSH/RST/SYN/FIN
6. 窗口大小
7. 校验和
8. 紧急指针
9. 选项
小写的 ack 代表的是头部的确认号 Acknowledge number,ack。大写的 ACK,则是 TCP 首部的标志位,用于标志的 TCP 包是否对上一个包进行了确认操作,如果确认了,则把 ACK 标志位设置成 1
在完成握手后,客户端与服务器就成功建立了连接,同时双方都得到了彼此的窗口大小、序列号等信息,在传输 TCP 报文段的时候,每个 TCP 报文段首部的 SYN 标志都会被置 0,因为它只用于发起连接、同步序号
挥手请求可以是 Client 端,也可以是 Server 端发起的,假设是 Client 端发起
第一次挥手
第二次挥手
第三次挥手
第四次挥手
总结:TCP 数据传输整个过程
UDP(User Datagram Protoco,用户数据报协议),是一种无连接、不可靠的协议,它也工作在传输层
UDP 协议的特点
总结
- IP 地址:可以在网络环境中,唯一标识一台主机
- 端口号:可以在网络的一台主机上,唯一标识一个进程
- IP 地址 + 端口号:可以在网络环境中,唯一标识一个进程