TCP与UDP
1、TCP/IP分层结构
2、TCP/IP分层结构
- 应用层:各个应用程序可以定义(使用)各种各样的协议
- 传输层:确保发出的数据能够到达目标主机,完成数据传输
- 网络层:填写数据包地址,选择数据传递路径
- 数据链路层:融合不同连接方式的链路,屏蔽网络差异
- 物理层:具体连接方式:有线,无线,光纤…
3、TCP/IP工作方式
4、TCP/IP层次结构的特点
- 上层依赖临近下层的能力,下层只为直接邻接上层服务
- 上层不知道下层的工作机制,下层不管上层传输的数据内容
- 不做跨层服务,层次结构中的角色缺一不可
5、深入理解网络层(IP层)
- IP寻址:IP地址属于网络层地址,用于标识网络上的主机
- 路由控制:控制数据如何到达目标主机(如:需要经过哪些路由器转发)
- 无连接:数据包根据IP地址在网络上传递(无需与目标实现建立连接)
6、IP地址和MAC地址
- IP地址是动态的,不特定于某个具体的硬件(MAC地址隶属于具体硬件)
- IP地址是网络层使用的地址(用于跨网络投递数据包)
- MAC地址是数据链路层使用的地址(用于确定目标网络中接收数据的主机)
- 路由器中记录了本网络中主机IP地址和MAC地址的映射关系
7、IP路由控制
- 为了将数据发送给目标主机,所有主机都维护着一张路由表
- 路由表记录了IP数据包下一步应该发送给哪个路由器
8、IP数据转发
- IP数据包转发采用的是“尽力服务”策略
- “尽力服务”指“会努力,但不保证结果”
- 转发时会通过附加信息检查数据合法性,但出现异常不会进行重发
- 以包为单位进行转发,不保证到达(发出后,石沉网海)
9、问题
TCP/IP网络层次结构是否提供可靠数据传输?
10、传输控制协议(Transmisson Control Protocol)
- TCP在协议实现上提供可靠数据传输
- TCP不存在“数据包”的概念,实现了流式传输(数据如流水,无头无尾)
- TCP内部有服务状态,能够精确指导数据是否已经发送成功,是否被接收。。
- TCP在行为上可进行阻塞控制(网络环境变差时,能够调整数据发送速度)
11、TCP连接建立
- TCP天生缺陷(DDoS攻击)
- 客户端收到SYN,ACK之后,不再回复最后的ACK消息
- 这将导致服务端消息资源,但并不会实际进行通信
- 当多个傀儡客户端同时对服务端进行“连接请求”,服务端资源将被耗尽
12、TCP连接断开
13、UDP的特点:完全继承网络层工作方式
- 无需连接,直接指定IP地址和端口号即可发送数据
- 监听固定端口,只要有数据,统统接收
- 不管网络情况,只要是数据统统可发送
- 不关心数据是否到达对端
14、UDP的使用场合
- 对数据不敏感,需要实时性的场合(如:直播,实时游戏)
- 网络环境比较好的场合(如:物联网家居)
- 需要深度制订协议的场合(如:“不丢包的”UDP协议)