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