传输层有两个协议 TCP 传输控制协议和 UDP 用户数据报协议
应用层的数据交换是进程和进程之间的 以message为单位的逻辑通信
IP是网络层协议 他向上提供的服务是不可靠的 而TCP加强了他的服务 将不可靠变为了可靠
网络层是主机之间的逻辑通信,传输层是进程间的逻辑通信
复用 解复用 比喻 两个家庭 a家12个小孩每个月给b家12个小孩每个人写一封信 就是144封信 从东海岸 发到西海岸 源到目标端一样 由a家老大把所有信收集过来 打一个包 放到邮箱当中 这是邮政的服务 运到西海岸b家 b家老大把144封信分成12份 这是老二的这是老三的 这里 a家老大做了一个复用的工作 b 家老大做了解复用的工作
TCP 多路复用解复用 拥塞控制 流量控制 建立连接
UDP 多路复用解复用 没有尽力而为的为IP服务添加更多额外服务
都不提供的服务:延时保证 带宽保证
传输层多出了一个port信息来完成源端的复用 到目标端的解复用 源端是TCP转IP(加上源IP 目标IP) 然后到了 目标端 又将IP转为了TCP(这里TCP有源端口目标端口 然后他加上了下层网络层带过来的 源IP目标IP)
在这里理解了一个 在应用层UDP没有理解的内容 为什么服务端与客户端中都需要建立soket保存本地IP和端口号? 因为有时候你是源有时候你是目的 soket上的主机和端口 实际上建立的是连个主机上进程的联系 UDP只跟本机的IP和端口相关联 只要是发给我的这个端口 就都是发给同一个应用进程 而TCP则是用soket来做区分 害 其实就是二元组与四元组的区别
UDP进程到进程 IP主机到主机
rdt 可靠数据传输 在下层所提供的服务是不可靠的情况下 本层的协议机制 协议实体 要靠哪些时空资源的安排 靠那些机制的安排 来向上层提供可靠的服务
rdt1.0 在可靠信道上的可靠传输 什么都不干 封装解封装
rdt2.0 具有比特差错的信道 fsm描述 发送方两种状态中根据收到ACK或者NAK来轮换 一种是等待来自上层的调用一种是等待ACK或NAK 而接收方只有一种状态就是 等待来自下层的数据 一开始我等待来自上层的调用 来了一个data 让我去发 我封装成一个package 然后我发给你 我开始等待ACK(没问题)或NAK(有问题) 如果来了ACK 我继续等待上层的Data 如果来的是NAK? 我把刚刚封装的package重放一遍 检错重传 然后再等待他回复ACK或NAK
rdt2.1 停止等待协议解决重复问题 在package中加入序号 等0来了1 或者等1来了零 都是不正常的 状态 来了分组 我要把序号取出来 而且要把这个分组的需要跟我等待的分组需要做一个匹配做个检查 如果我在等0 来了一个0 又来一个0 我收到了重复 的分组 但是仍然要给对方一个Ack 让对方重新发 pk0后面的pk1 接收方发出去ACK 其实并不知道对方有没有收到 但是我可以根据他发过来的下一个分组来判断我刚刚放出去的ACK到底有没有问题
rdt 2.2 无NAK 对上一个分组的正向确实 其实就是对当前分组的反向确认 他不发NAK了 发给当前发上一分组的ACK
英语语法 SVOO 与 SVOC 区别 后者有 等于是 的关系 约翰的父亲给他一只狗 约翰的父亲骂他是狗 抽象名词与物质名词不能用“一个” 来表示
简单式 过去 现在 未来 坐标轴括弧法