1. 计算机网络体系结构
计算机网络的体系结构有以上3种。
1. OSI的七层协议体系结构,概念清楚,理论完整,但复杂不实用;
2. TCP/IP体系结构,应用广泛。
3. 5层协议,综合OSI和TCP/IP的优点,相对简洁,用于原理学习。
各层的主要功能:
- 应用层(Application Layer):通过应用进程间的交互来完成特定网络应用,应用层协议定义的是应用进程间通信和交互的规则。应用层协议有:域名系统DNS、HTTP协议、邮件SMTP协议。应用层交互的数据成为报文(message)。
- 运输层(传输层,transport layer):负责向两台主机中进程之间的通信提供通用的数据传输服务。“通用”指多种应用可以使用同一个运输层服务。运输层主要使用的协议:1)TCP(Transmission Control Protocol)——提供面向连接的、可靠的数据传输服务,数据传输的单位是报文段(segment);2)UDP(User Datagram Protocol)——提供无连接的、尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),数据传输的单位是用户数据。
- 网络层(network layer):负责为分组交换网上的不同主机提供通信服务。网络层使用的是无连接的网际协议IP(Internet Protocol)以及多种路由选择协议。数据传输的单位叫做IP数据报,简称数据报。
- 数据链路层(data link layer):简称链路层,有专门的链路层协议。将数据报组装成帧(framing),然后再两个相邻节点间的链路上传送帧。
- 物理层(physical layer):所传数据的单位是比特
模型分层带来的好处:
- 各层之间独立;
- 灵活性好;
- 结构上可分割;
- 易于实现和维护;
- 促进标准化工作;
数据在各层之间传送过程:
TCP和IP两个协议是计算机网络中最著名的协议了,但TCP/IP更多的是代表整个TCP/IP协议族。
2. 物理层
物理层重要概念:
- 物理层考虑的是考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是只具体的传输媒体。物理层协议常称为物理层规程(procedure)。
- 一个数据通信系统可划分为原系统、传输系统、目的系统三个部分。
- 通信的目的是传送消息。数据是运送消息的实体。信号则是数据的电气或电磁的表现。
- 根据信号中代表消息的参数的取值方式不同,信号可以分为模拟信号(或连续信号)和数字信号(或离散信号)。代表数字信号不同离散数值的基本波形成为码元。
- 根据双方信息交互的方式,通信可以划分为单向通信(或单工通信)、双向交替通信(或半双工通信)和双向同时通信(全双工通信)。
- 来自信源的信号交做基带信号。
- 传输媒体可以分为导引型传输媒体(双绞线、同轴电缆或光纤)和非导引型传输媒体(无线、红外或大气激光)。
- 常用的心道复用技术有频分复用、时分复用、统计时分复用、码分复用和波分复用(光的频分复用)。
3. 数据链路层
数据链路层重要概念:
- 链路是从一个节点到相邻节点的一段物理线路,数据链路则是在链路的基础上增加一些必要的硬件(如网络适配器)和软件(如协议的实现)。
- 数据链路层使用的信道主要由点对点信道和广播信道两种。
- 数据链路层传送的协议数据单元是帧。数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
- 循环冗余检验CRC是一种检错方法,而帧检验序列FCS是添加在数据后面的冗余码。
- 点对点协议PPP是数据链路层使用最多的一种协议,特点是:简单;只检测差错,而不是纠正差错;不适用序号,也不进行流量控制;可同时支持多种网路层协议。
4. 网络层
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务(这种交付实质上就是不可靠交付)。网络层不提供服务质量的承诺。
网际协议IP
与IP新协议配套使用的还有三个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 根据主机(或路由器)的IP地址找出相应的硬件地址;
- 每台主机都有ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表;
- ARP高速缓存每过一段时间就会清空。
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
上图为网际协议IP及其配套协议的关系。
物理地址是数据链路层和物理层使用到的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址。其中的区别如下图
IP数据报的格式
IP层转发分组的流程
最主要的就是路由表,根据目的网络地址来确定吓一跳路由器,IP数据报最终可以找到目的主机所在目的网络上的路由器;只有到达最后一个路由器是,才视图向目的主机进行直接交互。
子网划分
即将两级IP地址划分为三级IP地址:IP地址={<网络号>, <主机号>} = {<网络号>, <子网号>, <主机号>}
网络层重要概念:
- IPV4 32位长,IPV6 128位长。
5. 运输层
运输层向它上面的应用层提供通信服务
运输层和网络层的主要区别
在运输层使用协议端口号(Protocol port number),在协议栈层间的抽象的协议端口就是软件端口。两个计算机中的进程要相互通信,不仅必须知道对方的IP地址(找到对方的计算机),而且还要知道对方的端口(为了找到对方计算机中的应用程序)。
常用的端口如上表。
用户数据报协议UDP(User Datagram Protocol)
特点:
- 无连接,发送前不建立连接,因此发送后也没有连接释放;
- 尽最大努力交付,保证不了交付的可靠性;
- 面向报文的,运输层发送方的UDP直接对应用层应用程序发送的报文添加首部后直接交付给IP层,接收方的UDP也是在去掉首部后直接交给应用层的应用程序;
- 没有拥塞机制;
- 支持一对一,一对多,多对一和多对多的交互通信;
- 首部开销小,只有8个字节,比TCP20个字节的首部要短。
UDP面向报文如下图:
传输控制协议TCP(Transmission Control Protocol)
TCIP是面向接连的服务。在传送数据之前必须先建立连接(三次握手),数据传送结束后要释放连接(四次挥手)。TCP不提供广播和多播服务。
主要特点:
- 面向连接的运输协议,在传输数据之前需要先建立连接,在传输数据完成之后,要释放TCP建立的连接;
- 每一条TCP连接只能有两个端点,因此TCP的连接是点对点;
- 提供可靠交付的服务,建立连接之后传输数据,无差错、不丢失、不重复、并且按序到达;
- 提供全双工通信,TCP允许通信双方的应用程序在任何时候都能发送数据,TCP连接的两端都设有发送缓存和接受缓存;
- 面向字节流,TCP中的流(stream)是指流入到进程或从进程流出的字节序列,面向字节流的含义:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序叫下来的数据仅仅看成史诗一连串的无结构的字节流;
面向字节流概念图如下:
TCP的连接:
TCP的连接有两个端点,这个端点叫做套接字(socket)或插口,端口号拼接到IP帝制即构成套接字,因此套接字的表示方法在点分十进制IP帝制后面写上端口号,中间用冒号或都好隔开,如IP地址是192.3.4.5,端口号是80,那么套接字就是:192.3.4.5:80,套接字(socket)=(IP地址:端口号),因此每一条TCP连接唯一的被通信两端的两个端点(两个套接字)所确定,TCP连接={socket1,socket2}={(IP1:port1),(IP2,port2)}。
socket还有不同含义:
- 允许应用程序访问连网协议的应用编程接口API(Application Programming Interface),即运输层和应用层之间的一种连接口,成为socketAPI,简称socket;
- 在socketAPI中使用的一个函数的函数名称也叫socket;
- 调用socket函数的端点成为socket,如“创建一个数据报socket”;
- 调用socket函数时,其返回值称为socket描述符,可简称为socket;
- 在操作系统内核中连网协议的Berkeley实现,成为socket实现。
TCP可靠传输工作原理:
- 停止等待协议
- 连续ARQ协议
TCP可靠传输的实现:
- 以字节为单位的滑动窗口
- 超时重传时间的选择,该时间选择是TCP最复杂的问题之一;
- 选择确认SACK(selective ACK)
TCP的流量控制;
流量控制(flow control)就是让发送方的发送速率不要太快,让接收方来得及接收。
- 利用滑动从窗口实现流量控制;
- TCP的传输效率
TCP的拥塞机制:
拥塞控制的一般原理,拥塞(congestion)指链路容量中的需求资源超过了可用部分,性能就变坏。
TCP的拥塞控制方法
- 慢开始(slow-start),由小到大增大发送窗口,即由小到大逐渐增大拥塞窗口的数量;
- 拥塞避免(congestion avoidance),让拥塞狂口缓慢增大,即加法增大;
- 快重传(fast retransmit),首先要求接收方不要等待自己发送数据是才进行捎带确认,而是立即发送确认,既是收到丢失的报文段也要立即发出对已收到的报文段的重复确认。
- 快恢复(fast recovery),快速恢复拥塞窗口。
TCP的运输连接管理:
- 连接建立,要解决的是三个问题
- 要使每一方都能够确认对方的存在;
- 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等等);
- 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。
三次握手过程
关于A为什么最后还要发送一次确认?主要是为了防止已失效的连接请求报文段突然又传送到B,而产生错误。所谓“已失效的连接请求报文段”是A第一次连接请求并没有丢失(传输时间有点长),然后A发送第二次连接请求并受到确认也建立了连接,且延误到AB已经传输完数据已经释放了连接后第一次的请求到了B,那么B误认为A又一次建立连接请求,这种情况就是A还未发送请求连接结果B已经确认了,那么A因为没有发送连接请求而直接不理睬,而B却以为建立了连接还会一直等待A发送数据。因此会有A的确认信息让B知道A已经收到确认连接信息,那么值钱的情况就不会发生,因为A收不到A的确认连接信息,就不会建立连接。
- 数据传送
- 连接释放
MSL叫做最长报文寿命短(Maximum Segment Lifetime) ,标准中建议为2分钟。第一为了保证A发送的最后一个A出口报文段到达B,即最后一个ACK确认B没有收到一直处于LAST-ACK的状态的话,B会重发FIN+ACK确认信,而A就是在2MSL时间内再次受到FIN+ACK消息的时候再次重传最后一个ACK消息,然后又启动2MSL计时器。第二是防止之前调到的“已失效的连接请求报问段”船现在本连接中,2MSL够所有本连接持续时间内所有的报文段从我网上消失。
四次挥手过程如上图。
6. 应用层
该层的具体内容就是精确定义不同主机中的多个应用进程之间的通信规则。
- 域名系统DNS(Domain Name System)
- 三级域名构成:mail.cctv.com中,mail为三级域名,cctv为二级域名,com为顶级域名
- 国家级顶级域名:cn中国,us美国,uk英国,好包括一些地区的域名,hk香港、tw台湾
域名空间如上图
参考于《计算机网络》
来源:https://www.cnblogs.com/baishouzu/p/12369311.html