zoukankan      html  css  js  c++  java
  • 网络面经

    按照网络作用范围分类:

    (1)广域网WAN  (2)城域网MAN  (3)局域网LAN  (4)个人区域网PAN

    数据链路层使用的信道主要有两种:

    点对点信道(使用PPP协议) 广播信道(使用CSMA/CD协议)

    数据链路层三个基本问题

    封装成帧  透明传输  差错检测

    中间设备:

    (1)物理层:转发器或集线器

    (2)数据链路层:网桥或桥接器或交换机

    (3)网络层:路由器

    (4)网络层以上的:网关

    ARP地址解析协议:由IP地址找出其相应的硬件地址

    请简单解释一下,arp协议和arp攻击。

    地址解析协议。ARP攻击的第一步就是ARP欺骗。由上述“ARP协议的工作过程”我们知道,ARP协议基本没有对网络的安全性做任何思考,当时人们考虑的重点是如何保证网络通信能够正确和快速的完成——ARP协议工作的前提是默认了其所在的网络是一个善良的网络,每台主机在向网络中发送应答信号时都是使用的真实身份。不过后来,人们发现ARP应答中的IP地址和MAC地址中的信息是可以伪造的,并不一定是自己的真实IP地址和MAC地址,由此,ARP欺骗就产生了。

    两级IP缺点:

    IP地址空间的利用率有时很低

    给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏

    两级IP地址不够灵活

    socket与TCP/IP的对应关系

    Socket是对TCP/IP协议的抽象,是操作系统对外开放的接口  

    运输层两个重要协议:

    用户数据报协议UDP:面向事务的不可靠信息传送服务,适用于多点广播,对可靠性要求低的场景

    传输控制协议TCP:面向连接的、可靠的、基于字节流的传输层通信协议,适用于需要数据完整性与实时性的场景

    TCP四种拥塞控制算法:慢开始,拥塞避免,快重传,快恢复

    TCP运输连接有三个阶段:连接建立、数据传送、连接释放

    三次握手,四次挥手

    第一次:建立连接,客户端发送SYN包(seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认;

    第二次:服务器收到SYN包,确认客户的SYN(ack=x+1),同时自己也发送一个SYN+ACK包(seq=y),此时服务器进入SYN_RCVD状态;

    第三次:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(seq=x+1,ack=y+1),此包发送完毕,客户端和服务器进入ESTAB_LISHED状态,完成三次握手

    第一次:客户端发送FIN,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态

    第二次:服务器发送ACK给客户端,服务器进入CLOSE_WAIT状态,此时服务器还可以给客户端发送数据,反之不行

    第三次:服务器发送FIN,用来关闭服务器到客户端的数据传送,服务器进入LAST_ACK状态

    第四次:客户端收到FIN后,发送ACK给服务器,然后进入TIME_WAIT状态,服务器进入CLOSED状态,客户端等待2MSL后进入CLOSED状态,完成四次挥手

    为什么要等待2MSL时间:

    确保有足够的时间让对方收到ACK包

    避免新旧连接混淆

    域名系统DNS(Domain Name System):从域名解析出IP地址。

    域名服务器四种类型:

    (1)根域名服务器(2)顶级域名服务器(3)权限域名服务器(4)本地域名服务器

    文件传送协议FTP(File Transfer Protocol)

    万维网WWW(World Wide Web)

    统一资源定位符URL

    简单邮件传送协议SMTP

    代理服务器(proxy server)

    作用:代理服务器把最近的一些请求和响应暂存在本地磁盘中,当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网访问该资源。减轻出口路由负担。

    在浏览器中输入网址后执行的全部过程

    1.查找域名对应的IP地址。这一步会依次查找浏览器缓存,系统缓存,路由器缓存,ISPNDS缓存,根域名服务器。

    2.向IP对应的服务器发送请求。

    3.服务器响应请求,发回网页内容。

    4.浏览器解析网页内容。

    输入 ping IP 后敲回车,发包前会发生什么?

    首先根据目的IP和路由表决定走哪个网卡,再根据网卡的子网掩码地址判断目的IP是否在子网内。如果不在则会通过arp缓存查询IP的网卡地址,不存在的话会通过广播询问目的IP的mac地址,得到后就开始发包了,同时mac地址也会被arp缓存起来。

    IP地址的编码分为哪俩部分?

    分网络号和主机号

    A类IP第一字节是网络号,后三字节是主机号

    B类IP前两字节是网络号,后两字节是主机号

    C类IP前三字节是网络号,后一字节是主机号

    HTTP和HTTPS的主要区别?

    http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

    ttp的连接很简单,是无状态的;

    HTTPS默认使用443端口,HTTP使用80端口

    HTTPS=HTTP+加密+认证+完整性保护,较HTTP安全

    HTTPS需要到CA申请证书,HTTP不需要

    HTTPS建立连接过程

    1 客户端访问https连接

    2 服务器端发送证书(公钥)给客户端

    3 客户端验证服务器端的证书,生成随机字符串并加密数据

    4 服务器端接收加密信息,解密得到客户端提供的随机字符串

    HTTP状态码

    1xx:指示信息——表示请求已接收,继续处理

    2xx:成功——表示请求已被成功接收、理解、接受

    3xx:重定向——要完成请求必须进行更进一步的操作

    4xx:客户端错误——请求有语法错误或请求无法实现

    5xx:服务器端错误——服务器未能实现合法的请求

    GET请求和POST请求的区别

    HTTP报文层面:GET将请求信息放在URL,POST放在报文体中

    数据库层面:GET符合幂等性和安全性,POST不符合

    其他层面:GET可以被缓存、被存储,而POST不行

    TCP粘包/拆包

    TCP是个“流”协议,所谓流,就是没有界限的一串数据,它们是连成一片的,其间并没有分界线。

    TCP粘包:socket读取时,读到了实际意义上的两个或多个数据包的内容,同时将其作为一个数据包进行处理。

    TCP拆包:socket读取时,没有完整地读取一个数据包,只读取一部分。

    解决思路:

    (1)消息定长,例如每个报文的大小为固定长度200字节,如果不够,空位补空格;

    (2)在包尾增加回车换行符进行分割,例如FTP协议;

    (3)将消息分为消息头和消息体,消息头中包含表示消息总长度的字段;

    (4)更复杂的应用层协议。

    一、ping 的原理

    ping程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。ping使用的是ICMP协议,它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。

    二、Ping工作过程——
    假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,都在同一子网内,则当你在主机A上运行“Ping 192.168.1.2”后,都发生了些什么呢?
    (1)Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.1.2”一起交给IP层协议 ping能够计算往返时间RTT,它在报文的数据部分插入发送时间。

    (2)IP层协议将以地址“192.168.1.2”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并在一个映射表(ARP实现 IP地址转成Mac地址的协议)中查找出IP地址192.168.1.2所对应的MAC地址(这是数据链路层协议构建数据链路层的传输单元——帧所必需的),一并交给数据链路层。

    (3)数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

    (4)主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。

    即先由IP地址,在网络层传输,然后再根据mac地址由数据链路层传送到目的主机

  • 相关阅读:
    Linux常用命令
    全文搜索服务器solr
    非关系型数据库之redis
    springMVC流程
    浅谈spring框架的控制反转和依赖注入
    Java基础之数组
    Java基础之方法
    跨域访问接口,传递参数
    Centos 6无法使用yum
    内网穿透工具:钉钉HTTP内网穿透使用与讲解
  • 原文地址:https://www.cnblogs.com/Lis-/p/12323917.html
Copyright © 2011-2022 走看看