本文摘抄自:《计算机网络-第七版》
一、计算机网络三种体系架构,OSI体系架构(7层)、TCP/IP体系架构(4层),五层体系架构
OSI、TCP/IP、五层体系架构
OSI 协议7层体系结构 | TCP/IP 协议4层体系结构 | 五层协议体系结构 |
---|---|---|
7 应用层 6 表示层:信息的语法语义、加密解密、转换翻译、压缩解压缩等 5 会话层:不同机器上的用户之间建立、管理会话 |
4 应用层:应用进程间的交互,完成特定网络应用 应用层 数据单元: 报文 应用层协议,定义 应用进程间通信、交互规的规则 (各种应用层协议如 telnet,ftp, smtp,http) |
5 应用层 |
4 传输层 | 3 传输层(TCP/UDP) 为进程间通信 提供 通用的 数据传输服务 通用:一台主机的多个应用可使用同一个传输层服务 传输层 有 复用、分用 的功能 复用:多个应用层进程同时使用下面传输层服务 分用:剥去报文的首部后,通过端口号,把数据传给目的进程 传输层 要检测接收到的报文 |
4 传输层 |
3 网络层 | 2 网络层(IP、路由器) 1)为 不同主机 提供 通信服务 2)选择合适的路由,通过网络中的路由器,找到目的主机 网络层把传输层的 报文段 / 用户数据报 封装成 分组 / 包(packet) 进行传送 在TCP/IP体系中,分组叫作 IP数据报 简称为 数据报 网络层协议:无连接的网络协议 (IP、路由选择协议) 网络层,只检验首部,不检查数据部分 |
3 网络层 |
2 数据链路层: 链路:结点 之间的一段物理线路 链路层 运行在 主机、路由器 之间 结点:运行链路层协议的设备 链路层设备:网卡、网桥、交换机 数据链路层 将 IP数据报 组装成 帧,在链路上传送帧 每一帧包括 数据、必要的控制信息(如同步信息、地址信息、差错控制等) 控制信息,指定一个帧,从哪个比特开始、到哪个比特结束 数据链路层收到一个帧后,提取处数据部分,上交给网络层 控制信息,检测收到的帧,有差错,则丢弃出了差错的帧 如果要纠正错误,要采用可靠传输协议 来纠正出现的差错 1 物理层: 物理层传输的数据单位是 比特 物理层需要: 对物理媒体做规范,屏幕不同物理媒体差异 确定 代表 “1” 或 “0”的电压,以及接收方如何识别 确定 连接电缆的插头应当有多少根引脚以及各条引脚应如何连接 解释比特的意思,不是物理层的任务 传递信息所利用的一些物理媒体,不属于物理层,而是在物理层协议的下面 |
1 网络接口层 | 2 数据链路层 1 物理层 |
两个主机数据传输
TCP / IP体系结构
传输层协议
协议 | 区别 | 说明 |
---|---|---|
TCP 传输控制协议 (Transmission Control Protocol) |
面向连接的、可靠的、数据传输服务 数据传输的单位是 报文段 (segment) 传输数据前需要建立连接 接收到 TCP 报文后,需要确认 通信结束后,必须释放连接 只支持一对一通信 TCP 连接的两端都有 发送缓存、接收缓存 发送时, 应用层把数据传到 TCP的缓存 ,TCP在合适的时候把数据发送出去 接收时,TCP 把收到的数据放入缓存,应用层在合适的时候读取缓存中的数据 TCP 面向字节流,把应用层传入的数据看成无结构的字节流 TCP 有流量控制、拥塞控制 根据对方给的窗口值、当前网络的拥塞程度,控制报文段长度 UDP 每次发送一个完整的报文,UDP 报文长度由应用层确定 |
传输层使用 TCP 的应用层协议: SMTP(简单邮件传送协议) TELNET(远程终端协议) HTTP(超文本传送协议) FTP(文件传送协议) |
UDP 用户数据协议 (User Datagram Protocol) |
无连接的、不保证传输可靠性 、的数据传输服务 数据传输的单位是 用户数据报 传输数据前不需要建立连接 接收到UDP报文后,不需要给出任何确认 UDP 没有拥塞控制 网络出现的拥塞,不会使源主机发送速率降低 UDP 支持一对一、一对多、多对一、多对多 的交互通信 UDP的首部开销小,只有8个字节 比 TCP的20个字节的首部要短 首部:源端口、目的端口、数据长度等 UDP 会把首部、数据部分都检验 |
传输层使用 UDP 的应用层协议: DNS(域名系统 传输层是 UDP 协议) RIP(路由信息协议) UDP 一次交付一个完整的报文 因此, 应用层必须选择合适大小的报文 报文太长,IP层传送时可能要分片,降低IP层的效率 报文太短,会使IP数据报首部相对长度太长,降低了IP层的效率 |
传输层的端口 16 位的端口号表示端口(65535个) 标识应用层各进程、传输层 交互的层间接口 |
1、服务器端口号: 常用端口 / 系统端口:0 - 1023 FTP:21、DNS:53、HTTP:80、HTTPS:443 登记端口:数值为 1024 - 65535 客户端与服务端某进程通信时 需要知道服务端进程使用的端口 2、客户端的端口号: 数值为 49152 - 65535 仅在客户进程运行时动态选择 通信结束后,释放端口号,供其他进程使用 客户端本机应用层进程、传输层交互时 使用端口区分不同进程 |
TCP 连接与释放连接
操作 | 过程 |
---|---|
三次握手 | 1、客户端向服务端 请求连接,客户端 SYN-SENT(同步已发送)状态 2、服务端向客户端发送 确认连接,服务器进入 SYN-RCVD(同步已接收)状态 3、客户端向服务端发送 已收到确认,客户端进入ESTABLISHED (已连接)状态 |
四次挥手 | 1、客户端向服务端发送 释放连接请求 客户端进入 FIN-WAIT-1(终止等待1)状态 2、服务端向客户端发送确认 服务端进入CLOSE-WAIT(关闭等待)状态 客户端收到确认后,进入FIN-WAIT-2(终止等待2)状态 客户端,等待服务端发出的连接释放报文段 3、服务端向客户端发送释放连接报文段 服务端进入LAST-ACK(最后确认)状态,等待客户端确认 4、客户端 收到服务端连接释放报文段后,向服务端发送确认 服务端收到客户端发出的确认后,进入 CLOSED状态 客户端进入TIME-WAIT(时间等待)状态 此时 TCP 连接还没有释放掉 启动计时器,等待 2倍 MSL(Maximun Segment Lifetime 最长报文寿命)后, 客户端菜进入到CLOSED 状态 客户端等待 2MSL 时间的原因: 1)保证客户端发送的最后一个确认,能够到达服务器 如果确认报文段丢失,导致服务器收不到确认。 服务端会超时重传连接释放报文段 客户端在 2MSL时间内收到服务端重传的连接释放报文段 接着客户端重传一次确认,重新启动2MSL计时器 最后客户端、服务端都正常进入到CLOSED 状态 2)防止“已失效的连接请求报文段”出现在本连接中 客户端发送完最后一个确认报文段后,再经过2MSL, 使本连接持续的时间内产生的所有报文段从网络中消失 |
TCP 协议详解
TCP 的功能 | 原理 |
---|---|
连接端点 Socket | TCP连接的端点叫 套接字(socket) 套接字 socket = (IP地址:端口号) 一个 TCP连接,唯一地被通信两端的两个端点(两个套接字)所确定 套接字socket,属于传输层,不是一种协议 |
可靠传输-停止等待协议 | 网络层提供的是不可靠的传输,TCP必须实现可靠性 1、停止等待协议 停止等待:每发送完一个分组,就停止发送,等待对方确认 收到确认后再发送下一分组 优点:简单 缺点:信道利用率太低(每次只能传输一个报文段) 异常处理规则: 接收方:接收数据时检测出现差错,丢弃出错的分组(不通知发送方) 发送方:超过时未收到确认,重传前面发送过的分组(超时重传) 超时重传实现:每发送完一个分组设置一个超时计时器 在计时器到期之前收到确认,则撤销该超时计时器 否则,重新发送该分组 注意点: 1)发送方发送完一个分组后,必须暂时保留已发送的分组的副本 收到接收方确认后,才能清除暂时保留的分组副本 2)分组、确认分组都 必须进行编号 明确是哪一个发出去的分组收到了确认,哪一个没收到确认 3)计时器 超时时间,应当比数据在分组传输的平均往返时间更长一些 过长,通信效率会很低 太短,易导致产生不必要的重传 接收方,发出的分组确认丢失 / 延迟,导致发送方触发超时重传 此时,接收方:丢弃这个重传的重复分组,然后重新发送确认 |
可靠传输-连续ARQ 协议 | 2、连续ARQ协议 发送方: 维持一个发送窗口,发送窗口内的多个分组可以连续发送 |