TCP 整理
TCP 属于传输层协议:端对端的通信、实现可靠的通信
客户端通过A应用层—ATCP—BTCP—B应用层
应用层驱动的方式:通过 socket 编程的方式
网络层驱动方式:TCP 收到一个TCP Segment(Header + Payload)
可靠性是核心
- 什么是可靠性
- 如何保证可靠性:学习各种机制
确认应答-超时重传
连接管理
发送量控制——拥塞控制
TCP vs UDP
- 可靠、有链接、面向字节流 vs 不可靠、无连接、面向数据报文
- TCP 不具有广播特性(一个人说,多个人听)
- TCP有启动代价(三次握手、拥塞窗口慢启动)
用UDP 实现可靠传输
传输层不负责的我们应用层来负责
- 引入序列号,保证数据顺序
- 引入确认应答,确保对端收到了数据
- 引入超时重传,如果隔一段时间没有应答,就重发数据
剩下的几层统一讲
目标:从技术术语角度,描述清楚,浏览器上输入了url到底发生了什么?
网络层 —— IP层 —— 负责路由的功能 —— 职责,负责点对点的通信(一台设备 到 一台设备的通信)
- 为什么需要路由 —— 寻路功能
- ip层主要做的事:
- 根据目标ip地址
- 根据本地的路由表
- 计算出下一跳的ip地址
ipv4 地址 本质是一个32位数
ip地址表示唯一的一台设备 —— 设备是始于一个局域网的
所以 ip 地址中包含两个信息
- 设备属于哪个网络 —— 网络号
- 设备是网络中的哪一个 —— 主机号
最早情况下,划分网络号和主机号 —— 使用的是固定方式,提前划分好
IP地址、子网掩码、网络号、子网范围地址区分
公网IP与内网IP
公网:外套的裤子,可以出去见人
内网:睡裤,出门前要换上外套的裤子
IP协议栈是如何进行路由的?
- 手中有 目标 IP地址 来自传输层
- 手中有路由表(route) 平时积累下来
通过这些计算出下一跳的IP地址
路径:
- 收到传输层的要求(不一定发给局域网)
- 我需要告诉链路层,发给局域网的哪一台设备
- 根据IP + 路由表 计算出下一跳IP地址
分别对比每一条记录,获得ip & 网络掩码的记过
如果相等,就表示下一跳的ip地址
有了下一跳 就要下一跳的mac地址
网络协议栈中有个 arp表 用来做地址转换