1.域名访问流程有哪些?
(1)整体流程
- 浏览器向DNS服务器请求解析www.baidu.com,得到解析的IP地址
- 浏览器与服务器建立TCP连接(默认Port=80)
- 浏览器发出HTTP请求,请求百度首页
- 服务器通过HTTP请求把首页文件发送给浏览器
- TCP连接释放
- 浏览器解析首页文件,展示给用户
(2)具体过程
- 2.1 域名(DNS)解析
域名解析作用:域名解析目的是从URL网址得到IP地址。
查找过程如下:
- OS先检查自己本地的hosts文件是否与URL网址有映射关系,如果有,直接调用映射出IP地址
- hosts中如果没有这个域名映射,查找本地DNS解析缓存,是否存在该网址映射关系,如果有得到IP地址,否则执行下一步
- 寻找TCP/IP参数中设置的首选DNS服务器(本地DNS服务器)中是否存在该域名,如果存在返回IP,否则下一步
- 如果本地DNS服务器和缓存解析都失败,则根据本地DNS服务器的设置(是否转发)进行查询。
- 未设置转发:本地DNS服务器把请求发送给13台根域名服务器,由根域名服务器进行层级解析。例如:先返回.com服务器IP1地址给本地DNS,本地DNS根据IP1联系.com域名服务器解析,如此一级级找下去,直到找到www.baidu.com
- 设置转发:此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环
- 找到后会把该域名解析保存到本地缓存中,以备下次使用
- 2.2 TCP建立连接
- IP+端口号
- 2.3 发送HTTP请求
HTTP请求信息由3部分组成:
- 请求方法URL协议/版本
- 请求头
- 请求正文
- 2.4 服务器把文件发送给浏览器
服务器在本地查找到html文件后传到浏览器
- 2.5 浏览器解析文件
2.IP网址分类,子网掩码和默认网关
(1)IP地址分类:分为A、B、C、D、E 5类,常用的是B和C类
- A类网址:网络位7位+主机位24位。IP地址范围:1.0.0.0~126.255.255.255。7位网络位是1字节,表示0-127。其中127网络位表示本地测试地址,不用于通信127.0.0.0--127.255.255.255
- B类网址:网络位14位,主机位16位,IP地址范围:128.0.0--191.255.255.255。
- C类网址:网络位21位,主机位8位,IP地址范围:192.0.0.0--223.255.255.255。
- D类网址:224.0.0--239.255.255.255
- E类网址:240.0.0--255.255.255.255
分析为如何划分的IP地址:
A类网址:0开头,余下7位网络位和24位主机位,因此范围是1.0.0.0-127.0.0.0。28-1=127,127地址段用于测试,因此最后IP地址范围是:1.0.0.0~126.255.255.255。主机号24可表示1600多万个主机,意味着每个网络号下都可以有这么多主机号。
B类网址:1 0开头,余下14为网络位和16位主机位,因此范围是1 0 0 0,0 0 0 0 = 27=128,因此开头位128,IP地址范围:128.0.0--191.255.255.255。网络号有16382个,每个网络号下的主机号16位可表示6万多个主机。
C类网址:1 0 0 开头,余下21位网络位和8位主机位,因此开头是1 1 0 0, 0 0 0 0 = 192,因此第一个字节为192,IP地址范围:192.0.0.0--223.255.255.255。网络号有209万多个,每个网络可容纳254个主机。
D类网址:1 1 1 0开头,余下28位网络位,因此开头是1 1 1 0, 0 0 0 0 = 27+26+25=224,因此第一个字节为224,IP地址范围:224.0.0--239.255.255.255。用于多点广播。
E类网址:1 1 1 1 0开头,余下27位网络位,开头1 1 1 1, 0 0 0 0 = 240,因此第一个字节位240,IP地址范围:240.0.0--255.255.255.255。保留使用
(2)子网掩码:用来确定主机号、网络号
- 子网掩码作用就是把某个IP地址划分为网络地址和主机地址两个部分,必须与IP地址一起出现。左边是网络位(用1表示),右边是主机位(用0表示)。
例如IP地址为“192.168.1.1”和子网掩码为“255.255.255.0”,表示前24位是网络位,最后8位是主机位。因此,只有通过子网掩码才能知道一台主机所在子网与其他子网关系。
- 常用的两种子网掩码是“255.255.0.0”和“255.255.255.0”,分别对应B类和C类网址。B类网络中,主机号范围是2552-2,这是因为主机号不能全为0或1。C类网络中,可提供256个主机地址,除去2个全为0或1的,余下254个。
- 因此,子网掩码大小需要根据主机个数设定,一般设置为上面两种,例如:254台以内设置对应C类网络的子网掩码
(3)默认网关:网关用来实现不同网络之间的通信
- 在没有路由情况下,两个网络之间是不能通过TCP/IP通信的,此时数据包的发送就需要通过网关转送了。网关需要IP地址,用来转发数据。
- 默认网关意思就是:如果主机找不到可用的网关,就把数据包发送给指定的网关,由这个网关处理数据包。
3.交换机、路由器、网关、网桥、集线器(HUB)
(1)集线器:
- 集线器的作用就是对信号进行再生放大,从而扩大了网络的传输距离,因此工作在物理层
- 使用集线器的网络叫“共享式”网络,一台主机发送的消息,所有主机都可收到,如果不是自己所要的消息会丢弃掉
(2)交换机:
- 交换机有很多端口,每个端口可连接一台计算机,转发数据帧(以太网帧)根据MAC地址和端口号识别
- 工作在数据链路层
(3)路由器:可以跨越不同的物理网络类型
路由器主要功能是:路由和转送。工作在OSI第三层:网络层
- 路由:决定数据包从源端到目的端所经过的路径
- 转送:将路由器输入端的数据(IP数据报)移送到适当的路由器输出端
路由在转发过程中需要用到ARP协议和RARP协议:这是因为,从IP地址到MAC地址转换过程中就用到了。IP数据报底层是以太网帧,因此需要解析解析
(4)网关:用来连接两个网络的设备(网络层)
- 网关又称为:网间连接器。其功能与路由器十分相似,都起了连接不同网络的作用。
- 举例:A网络和B网络通信,由于A和B不在同一个网络内,因此不能直接通信,需要借助中间“代理”网关/路由器来转发数据包才能到达对应的网段中
(4)网桥:工作在数据链路层。硬件网络协议翻译器,例如一个win,一个macos,两个通信需要翻译为对方能懂的语言。
4.ARP地址解析协议和RARP地址解析协议
(1)ARP地址解析协议
- 作用:根据IP地址解析出MAC地址
- 工作原理(步骤)
- 每个主机都在自己的ARP缓冲区中建立一个ARP列表,表示IP和MAC地址之间的映射关系。主机A向主机B发送数据时,先检查自己的ARP列表,如果没有有主机B的IP地址对应的MAC地址,则下一步
- 主机A在本机缓存中没有找到主机B的MAC地址,会根据主机B的IP地址询问MAC地址。携带着自己的IP地址和MAC地址将ARP请求广播到网络上,其他主机收到该请求检查是否匹配,如果不匹配则求其ARP请求。
- 主机B确定ARP请求的IP地址与自己IP地址匹配后,则把主机A的IP地址和MAC地址添加到自己的ARP缓存中
- 主机B把包含其MAC地址的ARP回复消息直接发送回主机A
- 主机A收到主机B的IP地址和MAC地址后,添加到A的ARP缓存中。此时可通信了
(2)RARP协议
- 作用:将某个主机的物理地址转换为IP地址。
- 工作原理:
- 主机发送一个本地的RARP广播,在此广播包中,包含自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址。
- 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。
- 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用。
- 如果不存在,RARP服务器对此不做任何的响应。
- 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。
5. OSI七层网络模型
6.TCP和UDP
(1)TCP详解
(2)TCP和UDP对比
- TCP 提供面向连接的、可靠的数据流传输,而 UDP 提供的是非面向连接的、不可靠的数据流传输
- TCP传输慢,效率低,UDP传输快,效率高
- TCP点对点,UDP可一对多
- TCP头部占20字节,UDP头部占8字节
(3)两者的应用场景
- TCP:HTTP,HTTPS,FTP文件传输,POP,SMTP等邮件传输协议
- UDP:QQ语音,QQ视频,DNS协议等
7.TCP协议如何保证可靠传输
(1)内容
- 超时重传:TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
- TCP给每个包进行编号,接收方对每个数据报排序,有序数据传输给应用层
- 校验和:TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。
- TCP接收端丢弃重复的数据
- 流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的我数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP使用的流量控制协议是可变大小的滑动窗口协议。 (TCP利用滑动窗口实现流量控制)
- 拥塞控制: 当网络拥塞时,减少数据的发送
- 停止等待ARQ协议(stop and wait):也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。
(2)具体解释
- 超时重传:停止等待协议中超时重传是指只要超过一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送过的分组丢失了)。因此每发送完一个分组需要设置一个超时计时器,其重转时间应比数据在分组传输的平均往返时间更长一些。这种自动重传方式常称为自动重传请求ARQ。另外在停止等待协议中若收到重复分组,就丢弃该分组,但同时还要发送确认。连续ARQ协议可提高信道利用率。发送维持一个发送窗口,凡位于发送窗口内的分组可连续发送出去,而不需要等待对方确认。接收方一般采用累积确认,对按序到达的最后一个分组发送确认,表明到这个分组位置的所有分组都已经正确收到了。
- 停止等待协议:发送完一个分组后停止发送,等待确认,收到确认后再发下一个分组
- 滑动窗口:实现流量控制。发送窗口里面的序号表示允许发送的序号。发送窗口后沿的后面部分表示已发送且已收到确认,而发送窗口前沿的前面部分表示不晕与发送。发送窗口后沿的变化情况有两种可能,即不动(没有收到新的确认)和前移(收到了新的确认)。发送窗口的前沿通常是不断向前移动的。一般来说,我们总是希望数据传输更快一些。但如果发送方把数据发送的过快,接收方就可能来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
- 流量控制:控制发送方发发送速率,保证接收方来得及接收
- 拥塞控制:
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
为了进行拥塞控制,TCP发送方要维持一个 拥塞窗口(cwnd) 的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个。
TCP的拥塞控制采用了四种算法,即 慢开始 、 拥塞避免 、快重传 和 快恢复。在网络层也可以使路由器采用适当的分组丢弃策略(如主动队列管理AQM),以减少网络拥塞的发生。
- 慢开始: 慢开始算法的思路是当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么可能会引起网络阻塞,因为现在还不知道网络的符合情况。经验表明,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd初始值为1,每经过一个传播轮次,cwnd加倍。
- 拥塞避免: 拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送放的cwnd加1.
- 快重传与快恢复:
在TCP/IP中,快速重传和恢复(fast retransmit and recovery,FRR)是一种拥塞控制算法,它能快速恢复丢失的数据包。没有FRR,如果数据包丢失了,TCP将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。有了FRR,就不会因为重传时要求的暂停被耽误。 当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。
8.HTTP和HTTPS的区别
(1)HTTP:超文本传输协议
(2)HTTPS:安全超文本传输协议
- 表示使用SSL加密。WEB服务器启用SSL需要获得一个服务器证书并将该证书与要使用的SSL的服务器绑定
- 基于HTTP开发,使用安全套接字SSL进行信息交换
(3)两者区别:
- HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费
- HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议
http://swiftlet.net/archives/1117
http://www.cnblogs.com/wxlzhizu/archive/2009/12/09/1620005.html
来源:oschina
链接:https://my.oschina.net/u/4281978/blog/3584862