https://juejin.im/post/5ad7e6c35188252ebd06acfa
这篇文章已经讲的很详细!
👇以下是我自己的一些整理
第一章 绪论
1. OSI,TCP/IP,五层协议的体系结构,以及各层协议
采用一种只有五层协议的体系结构,这样既简洁(相对OSI)又能将概念阐述清楚(相对于tcp/ip)。
应用层:提供与用户之间的接口 ——DNS/Telenet/HTTP/FTP/SMTP/POP3
运输层:提供进程到进程之间的数据传输——TCP/UDP
网络层:提供主机到主机之间的数据传输——IP/ARP/ICMP/IGMP
数据链路层:提供点到点之间的数据传输——PPP、以太网
物理层:物理介质上的比特流传输
低三层为通信子网,负责数据传输
高三层为资源子网,相当于计算机系统,完成数据处理;
传输层承上启下
2.数据交换的几种方式和特点
分组交换采取存储转发的技术
分组是把报文分成一个个数据段,在这些数据段前加上首部。
分组交换的优点:线路利用率高、时延小 。缺点:有额外的开销
电路交换需要建立连接,若要在连续传送大量数据的前提下,可以提高效率。报文交换也是采用存储转发,只是不分组。
3.边缘部分和核心部分
边缘部分:由连接在互联网上的主机组成
核心部分:由大量网络和连接这些网络的主机构成
4.在网络边缘的端系统之间的通信方式(CS / P2P)
客户端-服务器模式(C/S):客户和服务器都是指通信中所设计的两个应用进程,客户是服务请求方,服务器是服务提供方
对等连接方式(P2P):本质上还是CS模式,只是每一台主机即是客户同时又是服务器
5.计算机网络按照作用范围进行分类
广域网(WAN)
城域网(MAN)
局域网(LAN)
个人区域网(PAN)
第二章 物理层
1.信息交互的三种基本方式
单向通信、双向交替通信(半双工)、双向同时通信(全双工)
2.物理层的传输媒介
导引型传输媒介(双绞线、同轴电缆、光缆)
非导引型传输媒介(短波、微波)
3.常见的新到复用技术
频分复用、时分复用、统计时分复用
波分复用、码分复用
第三章 数据链路层
1.数据链路层有三个基本问题
封装成帧:在一段数据的前后添加首部和尾部
透明传输:不管在键盘上出现什么,都可以放在帧中传输(当出现数据内容出现结束符EOT时候,需要进行转义)
差错检测:一般使用循环冗余检测
2.适配器、转发器、集线器、网桥、以太网交换机、路由器
3.点对点信道(P2P)和广播信道(CSMA/CD)
第四章 网络层
1.PING操作的原理
使用ICMP协议,在IP主机、路由器之间传递控制消息
原理:
向目的主机发送多个ICMP回送请求报文
根据 目的主机返回的ICMP回送回答报文中的时间戳,从而计算出往返时间
最终显示的结果:发送到目的主机的IP地址、发送 & 收到 & 丢失的分组数、往返时间的最小、最大 & 平均值
2.IP地址分类
A类地址:以0开头,第一个字节范围:0126(1.0.0.0126.255.255.255)
B类地址:以10开头,第一个字节范围:128191(128.0.0.0191.255.255.255)
C类地址:以110开头
D类地址:以1110开头
E类地址:以1111开头
所有类别的地址的主机地址部分都不能为全0或全1,
主机地址部分全0 表示“本主机”所连接到的单个网络地址
主机地址部分 全1表示网络上的所有主机 也就广播地址。
3.ARP是地址解析协议,简单语言解释一下工作原理。
ARP协议是解决同一个局域网上的主机或路由器的IP地址和硬件地址之间的映射问题。
1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。
3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的目的IP地址是否是自己的IP地址,如果不是,则忽略该数据包;如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。
3.子网掩码的作用
用于划分子网
4.常见的路由选择协议
RIP协议、OSPF协议。
第五章 运输层
1.TCP三次握手和四次挥手的全过程(为什么会采用三次握手,若采用二次握手可以吗?)
第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
**TCP的三次握手过程(简述):
- 客户端–发送带有SYN标志的数据包–一次握手–服务端
- 服务端–发送带有SYN/ACK标志的数据包–二次握手–客户端
- 客户端–发送带有带有ACK标志的数据包–三次握手–服务端
采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B*,因而产生错误。主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。
断开一个TCP连接则需要“四次挥手”:
- 客户端-发送一个FIN,用来关闭客户端到服务器的数据传送
- 服务器-收到这个FIN,它发回一个ACK,确认序号为收到的序号加1 。和SYN一样,一个FIN将占用一个序号
- 服务器-关闭与客户端的连接,发送一个FIN给客户端
- 客户端-发回ACK报文确认,并将确认序号设置为收到序号加1
2.TCP和UDP的区别?
TCP面向连接,UDP面向非连接即发送数据前不需要建立链接
TCP提供可靠的服务(数据传输),UDP无法保证
TCP面向字节流,UDP面向报文
TCP数据传输慢,UDP数据传输快
TCP首部开销20字节;UDP的首部开销小,只有8个字节
TCP适用于文件传输、发送和接收邮件、远程登录等场景。UDP适用于即时通信(语音、视频 、直播)。
TCP对应的协议:
(1)FTP:定义了文件传输协议,使用21端口。
(2)Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3)SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4)POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议:
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
3.TCP可靠传输的保障?
1.停止等待协议:
“ 停止等待”就是每发送完一个分组就停止发送,等待对方确认
2.连续ARQ协议
接收方不必对收到的分组逐个确认,而是在收到几个分组后,对按顺序到达的最后一个分组发送确认。
第六章 应用层
1.域名系统DNS
2.HTTP协议
HTTP全称为超文本传输协议.
HTTP是无状态的,无连接的,它使用的是面向连接的TCP作为传输层的协议.
3.SMTP协议
4.HTTP的持续连接
使用持续连接,也就是服务器在发送响应后,仍然在一段时间内保持这条连接,使同一个用户可以继续在这条连接上传送后续的HTTP请求报文和响应报文。
不使用持续连接,每请求一个文档就要有两倍RTT(一个RTT用于连接TCP连接,一个用于请求和接收万维网)的开销。若主页上有很多连接的对象(如图片等)需要一次进行链接,那么每一次链接下载都要导致2RTT的开销。
5.常见的状态码
6.浏览器中输入www.baidu.com后执行的全部过程
现在假设如果我们在客户端(客户端)浏览器中输入http://www.baidu.com,而baidu.com为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作:
1、客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48。
2、客户端传输层,把HTTP会话请求分成报文段,添加源和目的端口,传递给网络层。
3、客户端的网络层主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,通过查找路由表决定通过那个路径到达服务器。
4、客户端的链路层,通过ARP协议查找给定IP地址的MAC地址,然后发送IP数据包到达服务器的地址。