


文章目录
一、网络通信标识的关系
1.主机<->IP
一台主机可以有 指向同台主机的多个不同IP
2.主机<->进程
一台主机上可以运行多个进程
3.进程<->程序
每个进程对应一个程序
4.端口<->socket
4.1端口
端口是主机的操作系统网络层 对外暴露 的网络服务入口
4.1.1端口号
端口号是占2个字节 大小的 16位无符号整数 ,范围在0~65535:
- 0~1023:知名端口,行业默认预留 给 实现HTTP、FTP、SSH知名协议功能 使用的通信端口
- 1024~49151:注册端口
- 49152~65535:动态/私有端口,客户端 常用 操作系统自动随机分配的临时端口 作源端口
4.2socket
socket是在程序里 伸入操作系统网络层 占用端口 进行通信的端点
4.2.1TCP的ServerSocket
ServerSocket绑定一个端口 调用accept 监听和接待 多个客户端来的新连接,返回 出一个个 同时与每个客户端长期通信的新socket
4.2.1.1新socket
共用ServerSocket的服务器端口 靠更完整的连接标识来区分不同的TCP连接:
- 服务器IP
- 服务器端口
- 客户端IP
- 客户端端口
- 协议类型
4.2.2UDP的DatagramSocket
DatagramSocket绑定一个端口 没有建立与客户端的连接 直接面对不同客户端发来的数据报
4.3关系
(1)一个socket 只能在绑定一个端口
(2)一个程序里可以创建多个socket 绑定不同端口 扩多分隔的通信:
- 8080业务端口 负责业务请求
- 9090管理端口 负责管理命令
- 1000调试端口 负责调试、状态查询、健康检查
(3++)同台主机 、同种传输协议 、同个本地IP 才是同一个的本地端口++ 同一时刻只能被一个socket独占绑定
二、UDP数据报的首部
UDP首部固定8个字节,分成4个字段,每个字段2字节:
1.源端口
源数据用来让对方回复锁定的
2.目的端口
3.长度
3.1界限
3.1.1在传输层:
2字节16位无符号整数 的数值 ,字节 的单位 -> 表示++整个UDP数据报的长度 在8~65535字节++ 之间、++UDP数据报的载荷 最大65527字节++
3.1.2到网络层:
IP包总长度最大65535字节 ,IP首部至少20字节 -> IP包里,++UDP数据报的长度 最大65515字节++ 、++UDP数据报的有效载荷 最大65507字节++
3.2传递
3.2.1UDP整传
传输层UDP面向数据报 上下发接 自带消息边界的完整消息
-> 应用层向下send的应用层数据包** 完整拼接作载荷** 、传输层向下层传输层 完整发送UDP数据报:
3.2.1.1传输层过大报错:
应用层数据包超过65527 字节,导致传输层UDP拼接后的数据报 超过最大的65535 字节,系统会因为过大而报错 发不下去
3.2.1.2IP层过大切片:
应用层数据包在(65507~65527] 字节之间,在传输层UDP数据报能发下去 ,但在IP层拼接后 会超过IP包最大的65535 字节,IP包会把大IP包切成多个IP分片 传输
TCP流传
TCP面向字节流 上下接触 连续无边界字节流,由底层自动切成TCP报文段 去发接流
4.校验和
- UDP按照协议规定算法 对UDP首部、UDP数据、IP层伪首部 算出一个16位结果 放入校验和字段的2字节中
- 对方再按协议相同算法 对接收数据计算校验和 检查数据在传输过程中是否损坏
