计算机网络教程的好文章收录
计算机网络入门基础篇:
https://zhuanlan.zhihu.com/p/22516664
互联网协议入门(一、二)阮一峰
http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
五(七)层互联网协议(计算机网络)深入浅出,看完必懂【图文一】二、三
https://www.jianshu.com/p/6ee3ee9c3cfd
https://pan.baidu.com/s/1i5vOMkX
里面有套华为工程师的讲解,感觉不错
深入浅出图解【计算机网络】 之 【TCP可靠传输的实现: 三次握手+滑动窗口】
https://www.cnblogs.com/alva-rabbit-hole/p/10081169.html
计算机网络学习笔记
该学习笔记以问题为导向,通过问题引导阅读,进而丰富自己的知识体系。
1.计算机网络的体系结构?
官方指定了OSI体系结构,包括了七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
但是由于种种原因,OSI并没有成为实际的网路体系结构。目前使用的是TCP/IP结构,该结构将其分为四层,将物理层、数据链路层作为一层,上面的依次是网路层、传输层、应用层。
2. 网络层各层的作用
1.传输层
为应用进程提供端到端的逻辑通信,即实现应用进程的复用和分用。为了使传输层识别不同的应用进程,规定了应用进程的端口号,系统端口号的范围是0~1024,也就是为什么node不能直接监听该范围的端口号。同时,也进行了差错控制,传输层的差错控制不仅包括首部信息,而且包含数据部分。
2.网络层
提供主机之间的逻辑通信。 与传输层的区别:网络层提供主机之间的逻辑通信,而传输层提供进程之间的逻辑通信
3. 传输层介绍
3.1 TCP、UDP的区别
a) UDP
- 无连接的传输层协议
- 传输速度快,尽最大努力交付,没有拥塞控制
- 首部信息开销小,仅需要8个字节,而TCP则需要20个。分别为源端口号、目的端口号、长度、校验和
b) TCP
- 面向连接的传输层协议
- 每个TCP连接只有两个端点:端点={IP:端口号}
- 可靠传输
- 流量控制、拥塞控制
3.2 传输层的可靠传输
理想的传输条件有两个:传输过程不出啊先差错;不管发送速度多快,接收方均可即使接收。但是现实情况并不满足这两个条件。
办法:停止等待协议:每次发送完一个分组后,接收方发出确认信息,但是这样做会使得信道使用率不高。
连续ARQ协议:发送方存在一个发送窗口,每收到一个确认信息,窗口就向前移动一个,但是往往采用累积确认的方式。
4物理层
作用:在计算机之间进行比特流传入。屏蔽到传输媒介和通信手段的差异,使数据链路层无需考虑这些问题。同时计算机多采用并行传输,而通信线路多采用串行传输,因此物理层还要完成传输方式的转换。主要任务就是确认与传输媒介的接口的特征。
5.数据链路层
- 封装成帧: IP数据包+首部和尾部,用于帧的定界
- 作用:封装成帧、透明传输、差错控制
- 协议: PPP、广播
- 局域网的数据链路层拆分成两个子层: 逻辑链路控制(LLC)、媒体接入控制(MAC),但是很多厂商生产的适配器仅装有MAC协议,而没有LLC协议
- 在局域网中,硬件地址又称为物理地址,或MAC地址
- 网桥工作在数据链路层,具有过滤帧的效果,根据MAC帧的目的地址对收到的帧进行转发,用于在数据链路层拓展局域网
- 适配器就是现在说的网卡
###6. 网络层
- 网络层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
- IP协议是网络层协议,还有三个配套的协议: 地址解析协议(ARP)、网际控制报文协议(ICMP)、网际组管理协议(IGMP)
- 网络连接起来需要一些中间设备: 物理层(转发器)、数据链路层(网桥或桥接器)、网络层(路由器)、网路层以上的中继系统(网关)
- 由于历史原因,将网络层使用的路由器成为网关
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),每个路由器都有一个两个或两个以上的IP地址,路由器的每一个接口都有一个不同网络号的IP地址。
- 路由器的作用是连接不同的网络,另外一个是路由寻址。
- 路由器只根据目的站的IP地址的网络号进行路由选择
- IP层屏蔽了下层复杂的细节,使用统一的、抽象的IP地址研究主机与主机、主机与路由器之间的通信
- ARP:每个主机都设有一个ARP高速缓存(ARP cache),如果不存在,则进行广播,找到后返回ARP响应,得到目的主机的物理地址
- 一个IP数据包由首部和数据两部分组成
- 因为最大传输单元的限制,数据需要进行分片,片偏移以八个字节为偏移单元
- 根据网络地址进行网路寻址
- 在单位内部进行子网划分,对外仍表现为没有划分子网的网络
- ICMP(Internet Control Message Protocol),用于提高IP数据报交付成功的机会,允许主机或路由器报告差错情况和提供有关异常情况的报告,不是高层协议,而是IP层的协议。ICMP报文作为IP层数据报的数据
- ICMP报文分为两种: ICMP差错报告报文和ICMP询问报文
- ICMP的应用:PING是应用层直接使用网络层,使用了ICMP回送请求与回送回答报文
- 路由寻址时,采用分层次的路由选择协议
- 虚拟专用网可以使用本地地址,只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。在因特网中的所有路由器对目的地址是专用地址的数据包一律不进行转发。
###7.传输层
- 作用:a.为应用进程提供端到端的逻辑通信;b.对收到的报文进行差错检测
- UDP传输前不需要建立连接,是不可靠传输;TCP提供面向连接的服务,提供可靠的、面向连接的运输服务
- 进程在计算机中是通过进程标示符(PID)来标识的,不同操作系统是不同的,进程的创建和撤销都是动态的,因此为了表示应用进程,采用了端口号
- 端口号是一个16位,只具有本地意义,只是为了标识本计算机应用层中得各个进程。
- 端口号分为三类:熟知端口号(0-1024)、登记端口号(1024-49151)、客户端口号(49152-65535)
- UDP:与IP数据包相比,仅增加了端口功能、差错校验。
- UDP特点:无连接、最大努力交付、不可靠交付、没有拥塞控制、首部开销小8.
- UDP数据报:UDP首部(8个字节) + 数据
- TCP:面向连接、可靠交付、全双工通信、面向字节流
- TCP:每条TCP连接有两个端点,端点叫做套接字(socket)或插口,端口号 + IP地址 = 套接字
- 可靠传输–停止等待协议:确认和重传机制,可以在不可靠的传输网络中实现可靠通信
- 连续ARQ协议:累计确认,对按需到达的最后一个分组发送确认
- TCP:每端须有两个窗口,一个发送窗口,一个接收窗口,确认是依据序号
- TCP:TCP首部至少需要20个字节,还包含可变部分
- TCP可靠传输的实现:以字节为单位的滑动窗口
- 发送缓存:准备发送的数据、已发出但尚未收到确认的数据;接收缓存:按序到达,尚未被读取的数据、不按序到达的数据
- 流量控制:数据发送过快,接收方就可能来不及接收,熬成数据的丢书,利用滑动窗口机制可以方便地在TCP连接上实现流量控制。也就是发送方的发送速度不要太快,要让接收方来得及接收
- 拥塞控制:对资源的需求量 > 可用资源
- 拥塞控制 vs 流量控制:拥塞控制是一个全局性的过程,涉及到所有的主机、所有路由器,以及与降低网络传输性能有关的所有因素;流量控制往往指发送端和接收端之间的点对点通信量的控制
- 拥塞控制的方法:a.慢开始 逐步增大发送端的拥塞窗口,使分组注入到网络的速度更加合理,是加倍增加 b. 拥塞避免算法:拥塞窗口缓慢增大,按照现行规律缓慢增长。总的来说就是,开始拥塞窗口较小,然后先按指数速度增长,然后再按照现行速度增长,当出现拥塞时,立即减小拥塞窗口的大小。
- 拥塞控制方法2:快重传和快恢复。a.快重传—接收方每收到一个失序的报文段,就立即发出重复确认,快重传bong非取消重传计时器,而是在某些情况下可尽早地重传丢失的报文段
- TCP的运输连接分为三个阶段:连接建立、数据传输、连接释放
- TCP连接的建立:SYN:连接请求和连接接受报文,ACK:确认号。通过三次握手,建立TCP连接
- TCP连接释放:FIN=1:连接释放报文首部。需要经过两次的报文传输,才能做到连接的释放。
###应用层
- 应用层:规定应用在通信时所遵循的协议
- 域名:采用层次树状结构的命名方法,根域名服务器是树状的,根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器
- FTP:21是连接时使用的端口号;20是数据发送使用的端口号
- HTTP协议本身是无状态的,也是无连接的,虽然TCP是面向连接的。HTTP/1.1使用持续连接,服务器在发送响应后连接会保持一段时间
- HTTP报文格式:开始行、首部行、实体部分
- 搜索引起:全文搜索会采集页面信息,而分类目录搜索利用各网站向搜索引起提供信息
- 邮件协议:发送邮件SMTP,读取邮件(POP3、IMAP)
- 大多是操作系统使用系统调用在应用程序和操作系统之间传递控制权
- 应用进程需要获取网络资源,则可以通过套接字来完成
- ICMP协议:因特网控制报文协议,是网络层的一个子协议,用于IP地址与路由器之间传递控制信息,检测网络是否通畅
知识点
- 集线器:工作在物理层,作用:对接收到的信息进行整形放大,最后将放大的信号广播到其他所有端口
- 子网:子网的划分是单位内部的事情,所以外部使用的是整个子网的路由器地址,也就是所以子网内主机对外共享一个网络地址。这样就存在这样的问题:知道A的IP地址,子网掩码,求A的网络地址
- ARP:将IP地址和MAC进行转换,数据链路、物理层是通过MAC地址进行转发的。ARP有一个高速缓存,存储这IP、MAC地址的映射关系,当存在就直接转发,不存在就广播寻找,不在同一个网络上,就寻找路由器的mac地址,交付给该路由器,该路由器把分组交给下一个网络。
- 电路交换 vs 分组交换: 电路交换–首先通信双方建立连接通道,在连接过程中始终占用着信道资源;分组交换:通信前不需要先建立通信路径,将数据分为较小的单元,
- 封装成帧:在数据前后记入一个控制字符:SOH、EOT;透明传输:如果数据部分存在控制字符,则在其前面加上转移字符ESC(字节填充)
- 路由表的内容:网络地址、子网掩码、下一条地址、花费、路由的服务质量、路由中需要过滤的出/入连接列表
- 路由器的分组转发算法:a.根据IP数据报得出其网络号,如果当前就是,则直接交付,b.根据路由表,交付给下一跳路由器;c.如路由表有一个默认路由,则数据报传递给默认路由。
- 使用UDP的应用层协议:DNS(域名解析服务)、SNMP(简单网络管理协议)、TFTP(简单文件传输协议)、DHCP(动态主机设置协议)
- 应用层并不是指运行在网络上的某个特别应用程序,而是指为用户的应用进程提供的服务
- 网络层不保证通信的可靠,运输层负责
- IGMP(网络组管理协议):发送多播协议