1、OSI,TCP/IP五层协议的体系结构以及各层协议
OSI分层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
物理层:中继器、集线路、网关 (媒体传输比特Bit)
数据链路层:PPP、VLAN、MAC (把比特组装成帧和点到点的传输Frame)
网络层:IP、ICMP、ARP、OSPF、路由器 (负责数据包从源到宿的传递 Packet)
传输层:TCP、UDP (提供端到端的可靠报文传输和错误恢复 段Segment)
应用层:FTP、DNS、Telnet、HTTP、WWW
TCP/IP分层:网络接口层、网际层、运输层、应用层
五层协议:物理层、数据链路层、网络层、传输层、应用层
2、IP地址常见笔试题
IP地址总共分为5类,A,B,C,D,E
IP地址=网络地址+主机地址,一共32位,分位4个8位二进制数
A类:0.0.0.0-127.0.0.0 子网掩码255.0.0.0 00000000 + 主机号
B类:128.0.0.0-191.255.0.0 子网掩码255.255.0.0 10000000 00000000 + 主机号
C类:192.0.0.0-223.255.255.0 子网掩码255.255.255.0 11000000 00000000 + 主机号
D类 11100000 00000000 ...
E类 11110000 00000000...
网络号的位数直接决定了可以分配的网络数,主机号的位数决定了网络中的最大主机数
子网掩码将某个IP地址划分为网络地址和主机地址两部分
1)利用子网数来计算子网掩码
将B类地址 172.16.0.0划分成30个网络
离30最近的2的倍数为32,2的5次方
即172.16.00000000.0 - 172.16.11111000.0,
将B类地址的子网掩码255.255.0.0主机地址部分的前5位变成1,得到子网掩码255.255.248.0
2)利用主机数来计算子网掩码
将B类地址172.16.0.0划分成若干个子网络,每个子网络500个主机
把500转换成二进制表示111110100,有9位,则主机部分要有9位,
则将子网掩码255.255.255.255从后向前的9位变成0,得到子网掩码255.255.254.0
3、ARP是地址解析协议,简单语言解释一下工作原理
1)首先,每个主机都会在自己的ARP缓冲区建立一个ARP列表,表示IP地址和MAC地址之间的对应关系
2)当源主机要发送数据时,首先检查ARP列表中是否有对应的IP地址的目的主机的MAC地址,如果有,则直接发送数据;
如果没有,就向本网络的所有主机发送ARP请求数据包,内容未:源主机IP,源主机MAC,目的主机IP
3)当本网络的所有主机收到该ARP数据包,首先检查数据包中的IP地址是否为自己的IP,如果是,则首先将源主机的IP、MAC地址写入自己的ARP列表,然后将自己的MAC地址写入ARP响应包中,如果不是则忽略。
4)源主机收到ARP响应包后,将目的主机IP、MAC写入ARP列表,并发送数据
注意,源主机广播发送ARP请求,目的主机单播发送ARP响应
4、TCP三次握手、四次挥手的过程
1)三次握手
第一次握手:客户端发送syn包(syn = x)到服务器,并进入SYN_SEND状态,等待服务器确认
第二次握手:服务端收到syn包,确认客户端的syn,发送ack包(ack = x+1),同时发送syn包(syn = y),即SYN+ACK包,进入SYN_RECV状态
第三次握手:客户端收到SYN+ACK包,向服务器回ack包(ack=y+1)。此包发送完毕,客户端服务器进入established状态,完成三次握手。
为什么不能使用两次握手?
为了防止 已失效的链接请求报文突然又传送到了服务端,因而产生错误。
假设主机A第一次发送连接请求,发送的syn包经过网络延迟到主机B,主机B以为主机A发起了新的连接,同意连接,回复ack包,但是此时主机A根本不会理会,因为默认之前的连接请求已经失效。于是主机B一直在等待主机A发送数据,导致主机B的资源被浪费。
2)四次挥手
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,进入FIN_WAIT_1状态
第二次挥手:Server方收到FIN后,回复一个ACK给对方,确认序号为收到序号+1,进入CLOSE_WAIT状态
第三次挥手:Server再发一个FIN给主动方,用来关闭Server到Client的数据传送,进入LAST_ACK状态
第四次挥手:Client收到ACK后,进入FIN_WAIT_2状态,收到FIN后,进入TIME_WAIT状态,回复一个ACK,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手
5、TCP和UDP的区别
TCP是面向连接的,可靠的数据流传输,而UDP提供的是非面向连接的,不可靠的数据传输
TCP的传输单位称为TCP报文段,而UDP得传输单位称为用户数据段
TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信
TCP注重数据安全性,UDP的传输速度快,因为不需要连接等待
6、DNS域名系统,简单描述其工作原理
应用层协议,用户查询域名对应的IP地址,在域名访问任何网络资源时都需要先进行域名解析
7、在浏览器输入www.baidu.com的全过程
1)域名解析,通过DNS获取服务的IP地址
2)tcp三次握手建立连接
3)建立连接后发送http请求
4)服务器端响应http请求
5)浏览器得到请求的内容,解析网页,通过对页面进行渲染,展示在用户面前
8、对HTTP协议的理解
超文本传输协议是一种无状态、应用层的协议,基于TCP协议传输数据
支持客户/服务器模式,每次完整交互都包含http请求和http响应
Get和Post请求的区别
GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源
POST的安全性要比GET的安全性高
1)Get请求
Get方式URL提交数据,数据在URL中可以看到,提交的数据最多能有1024字节
数据会附在URL之后,即将请求数据放置在HTTP报文的 请求头 中,以?分割URL和传输数据,参数之间以&相连
2)Post请求
POST请求会把提交的数据则放置在是HTTP请求报文的 请求体 中,提交的数据没有字节的限制,不允许缓存
9、客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?
服务器端会为每个请求创建一个链接,并向其发送确认报文,然后等待客户端进行确认
1)、DDos 攻击
2)、DDos 预防 ( 没有彻底根治的办法,除非不使用TCP )
10、Http和Https的区别
Https协议在http协议的基础上加了SSL(Secure Socket Layer)层,是基于SSL的超文本传输协议
http协议传输的明文,https传输的是加密后的信息
http的端口是80,https的端口是443
http的连接很简单,是无状态的;HTTPS协议进行加密传输、身份认证的网络协议,比http协议安全。
https需要申请ca证书,往往是付费的,而http是免费的
11、TCP协议如何来保证传输的可靠性