协议:
为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式。
OSI 七层模型
分层设计的意义:
通信服务层的模块设计可相对独立于具体的通信线路和通信硬件接口的差别而简化通信服务层模块设计又可相对独立于具体用户应用要求的不同
简化了相关的网络操作,提供了不同厂商之间的兼容性
促进了标准化工作,结构上进行了分层,易于学习和操作
各个层次独立,每层完成特定的功能,一层的变化不会影响到邻层
(1)应用层:(http, smtp, telnet, ping, DNS, FTP)
为应用程序提供 网络服务,应用层的协议可能会跳过传输层直接使用网络层的服务
应用层协议通常可以使用TCP服务,也可以使用UDP服务
ping:应用程序,利用ICMP报文检测网络连接
Telnet:远程登录协议,在本地完成远程登录任务
OSPF:动态路由更新协议,用于路由器之间的通信
DNS:域名服务协议,提供机器域名到IP地址的转换功能,DNS是一套分布式的域名服务系统。每个DNS服务器上存在大量的机器域名和IP地址的映射,并且是动态更新的
(2)表示层:
数据格式化,加密,解密
(3)会话层:
建立、维护、管理会话连接,对应用会话的管理、同步
(4)传输层:(TCP, UDP)
①可靠传输 : 将一个数据切割成很多报文段,进行单独传输,对于每个接受到的报文段,接收端都会返回一个确认。如果未收到确认,那么重新发送
不可靠传输:没有确认机制
②差错控制:重新对报文段进行排序
③流量控制:控制发送速度
④复用:多个应用层可同时使用下面传输层的服务
分用:传输层把收到的信息分别交给上面应用层中相应的进程
建立、维护、管理端到端【端口到端口】的连接,可靠与不可靠的传输,传输前的错误检测,流控
只关心通信的起始端和目的端,并不在乎数据包的中转过程
TCP:为应用层提供可靠的、面向连接的、基于流的服务
UDP:为应用层提供不可靠、无连接、基于数据包的服务
(5) 网络层:(IP, ICMP)
主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务
网络层 传输的基本单位是数据报
①路由选择(最佳路径)
②流量控制(协调发送端和接受端的速度)
③差错控制(确保传输层的数据报没有问题)
④拥塞控制
IP寻址和路由选择
数据报的选路和转发
(IP协议使用逐跳的方式确定通讯路径) IP是不可靠的无连接的协议,并不关心数据包是否到达目的地,也不关心连接和端口号,它的工作是发送数据包并将其路由到目标计算机,其中每个数据包都是独立的互不依赖的,所以有可能会乱序到达目标计算机,或者在传输途中丢失
(ICMP检测网络连接)
(6)数据链路层:(ARP, RARP【IP地址和物理地址的解析和逆解析】)
将网络层的数据报封装成帧
控制网络层和物理层之间通信
网卡接口的网络驱动程序处理数据在物理传输媒介上的传输
(7)物理层:
在物理媒体上实现比特流的透明传输
比特流传输、光信号。网线,光缆
服务:某一层为上层提供一些什么功能(下层为上层提供服务)
接口:上一层如何使用下层的服务
协议:如何实现本层服务
TCP/IP 协议族,分层,多协议的通信体系
应用层如何与内核空间的传输层进行联系? 套接字
封装:在应用程序数据发送到物理网络之前,将沿着协议栈从上往下依次传递,每一层协议都在上层数据的基础上加上自己的头部信息(尾部信息),实现该层功能
TCP协议:为通信双方维持一个连接,并且在内核中存储相关数据。这部分数据中的TCP头部信息和TCP内核缓冲区数据一起构成报文段
UDP协议:UDP无需为应用层数据保存副本,当一个UDP数据报被发送成功后,UDP内核缓冲区中的该数据报就被丢弃了
帧:经过数据链路层封装的数据
四层模型
应用层(提供特定于应用系统的协议)
传输控制层(发送数据包到计算机上使用特定端口号的应用程序)
网络层(使用IP地址将特定的数据包发送到指定的计算机)
链路层(二进制数据包与网络信号相互转换)