网络应用层编程入门


文章目录
一、操作位置
写的代码100%都是应用层,网络操作并不是 跟随数据包随层部署执行的,而是始终站全局 能跃层部署执行的
二、通信路径
1.单工
一条单向固定通道,永远只能某向通信
2.半双工
一条双向互通通道,一时间只能 在进行一向通信
3.全双工
两条互逆的单向固定通道,可以同时进行双向通信
三、丢包现象
物理信号干扰篡改、设备转发上限或接收方处理不过来的数据转接拥塞丢弃 造成数据混乱 就是丢包
四、协议类型
1.UDP
进行一DatagramPacket面多的通信
1.1单位
面向数据包Packet单位
1.2存储
四元组:源+目的IP,源+目的端口号 存储在DatagramPacket对象里面
1.3操作者
DatagramPacket操作它包对象里面存储的通信标识
1.4不可靠
1.4.1信号干扰时
UDP头部的校验和计算发现丢包后 结束丢弃数据包
1.4.2转接拥塞时
UDP无视数据转接时的拥塞状态 始终以恒定速率发包不管丢弃
2.TCP
进行一Socket向一的通信
2.1单位
面向字节流Stream单位
2.2存储
五元组:源+目的IP,源+目的端口号,协议号、序列号、对方接收窗口大小 存储在内核内存中的TCB结构体里面
2.3操作者
Socket存的文件描述符fd 交由内核 操作对应TCB里面存储的通信标识
2.4可靠
2.4.1信号干扰时
TCP头部的校验和计算发现丢包后 接收方丢弃数据包、不发回复ACK 直到发送方等待超时后重发新包
2.4.2转接拥塞时
TCP会缩小发送窗口来降低发送速率 以减少丢弃
五、服务接口
网络协议栈中,下层都会为上层提供服务接口
1.Socket文件
操作系统把传输层及以下层的硬件 抽象成Socket文件,传输层把Socket文件 交应用层,给针对指向
1.1DatagramPacket
DatagramPacket是网卡接手的 压缩五层网络数据的快递包裹,里面填写有:
| 源IP | 本机站点地址 |
|---|---|
| 目的IP | 对机站点地址 |
| 源端口 | 本机存储单类货物间的入门号 |
| 目的端口 | 对机存储单类货物间的入门号 |
1.2DatagramSocket
DatagramSocket是运输货物系统,在构造时搭起 在源端口号的本机货物房间
2.Socket API
操作系统把传输层及以下层的内核操作 封装成Socket API,传输层把Socket API交应用层,给指挥执行:
应用层代码调用Socket API时会触发程序中断,执行权限从应用层的用户态 转变成操作系统的内核态执行传输层及以下层的内核操作
2.1DatagramSocket API
2.1.1搭起房间2.1.1.1服务器
能看见自己主机端口分布的服务器 适合 自定义选择端口号搭起,在指定源端口搭起本机货物房间开启运输货物系统2.1.1.2客户端
未探明用户主机端口分布的客户端 适合 由操作系统随机分配空闲端口号搭起,在随机空闲源端口搭起本机货物房间开启运输货物系统
2.1.2接收包裹
运输系统接收二进制数据 覆进网卡数据包,接收为空则进入阻塞等待
2.1.3发送包裹
运输系统发送网卡数据包里的二进制数据
2.2DatagramPacket API
2.2.1制造包裹
构造五层压缩的网卡数据包,指定 字节数组起始+长度部分为应用层数据包、目的IP、目的端口号
2.2.2提取包裹2.2.2.1应用层数据包
网卡数据包获取里面的 字节数组形式的应用层数据包2.2.2.2应用层数据包的字节长度
网卡数据包获取里面的 字节数组形式的应用层数据包的字节长度2.2.2.3源IP
网卡数据包获取里面的 源IP2.2.2.4目的IP
网卡数据包获取里面的 目的IP2.2.2.5源端口
网卡数据包获取里面的 源端口2.2.2.6目的端口
网卡数据包获取里面的 目的端口2.2.2.7目的IP+目的端口
网卡数据包获取里面的 目的IP+目的端口
转化
1.String->InetAddress
将String字符串转为InetAddress IP地址
2.InetAddress->String
将InetAddress IP地址转为String字符串
