谨以此篇记录我的面经准备

上三层称应用层,用来控制软件方面。下四层总称数据流层,用来管理硬件。 数据在发至数据流层的时候将被拆分,在传输层的数据叫段,网络层叫包,数据链路层叫帧,物理层叫比特流,这样的叫法叫PDU(协议数据单元)。

Application Layer第7层应用层:

  • 用户与网络的接口。为用户的应用进程提供网络通信服务。
  • 定义数据格式并按照对应的格式解读数据。
    服务端解析、处理、响应请求&客户端解读数据。经过其他几层的数据传输,传输到应用层的数据是字节流,不能很好的被程序识别,操作性差,因此,应用层定义了各种各样的协议来规范数据格式,常见的有http,ftp,smtp等,在请求Header中,分别定义了请求数据格式Accept响应数据格式Content-Type,有了这个规范以后,当对方接收到请求以后就知道该用什么格式来解析,然后对请求进行处理,最后按照请求方要求的格式将数据返回,请求端接收到响应后,就按照规定的格式进行解读。

Presentation Layer第6层表示层:

  • 主要用于处理两个通信系统中交换信息的表示方式,为上层用户解决用户信息的语法问题。
    数据的编码,压缩和解压缩,数据的加解密。

Session Layer第5层会话层:

  • 管理和协调不同主机上各种进程之间的对话,为端系统的应用程序之间提供了对话控制机制。即负责在网络中的两节点之间建立、维持和终止通信。
    如果在某一时刻只允许一个用户执行一项特定的操作,会话层协议就会管理这些操作,如阻止两个用户同时更新数据库中的同一组数据。

Transport Layer第4层传输层:

  • 源端与目的端间提供可靠的透明数据传输,包括处理差错控制和流量控制等问题。
    为会话层用户提供一个端到端的可靠、透明和优化的数据传输服务机制。包括全双工或半双工、流控制和错误恢复服务;
  • 传输层把消息分成若干个分组,并在接收端对它们进行重组。不同的分组可以通过不同的连接传送到主机。这样既能获得较高的带宽,又不影响会话层。
    传输层传送的协议数据单元称为段或报文
  • 传输层引入UDP协议为每个应用程序标识身份。链路层定义了主机的身份,即MAC地址,网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就可以从一个主机发送到另一台主机。但实际上数据包是从一个主机的应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着很多应用程序,所以当数据包被发送到主机以后,是无法确定哪个应用程序要接收这个包。

Network Layer第3层网络层:

  • 将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。
  • 路由协议:首先通过IP协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过ARP协议查询对应的MAC地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,然后再通过ARP获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。而完成这个路由协议的物理设备就是路由器,路由器扮演着交通枢纽的角色,它会根据信道情况,选择并设定路由,以最佳路径来转发数据包。
  • 定义网络地址、区分网段、子网内MAC寻址、对于不同子网的数据包进行路由。
    选择路由:解决如何使数据包通过各结点传送的问题,即通过路由选择算法将数据包送到目的地。通过寻址来建立两个节点之间的连接,为源端的运输层送来的分组,通过互连网络选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。
    负责建立和维护连接,控制网络上的拥塞以及在必要的时候生成计费信息。为避免通信子网中出现过多的数据包而造成网络阻塞,需要对流入的数据包数量进行拥塞控制。当数据包要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。
    传送的协议数据单元称为数据包或分组

Data Link Layer第2层数据链路层:

  • 接收来自物理层的位流形式的数据,并封装成帧,传送到上一层。流量控制和差错控制。
    解决两个相邻结点之间的通信问题,屏蔽物理层,为网络层提供一个数据链路的连接。
    通过校验、确认和反馈重发等手段,将不可靠的物理链路转换成对网络层来说无差错的数据链路(差错控制)。协调收发双方的数据传输速率,即流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲器溢出及线路阻塞。
    常用设备有网卡、网桥、交换机
    传送的协议数据单元为数据帧,包含MAC地址、数据及校验码等信息。

Physical Layer第1层物理层:

  • 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
  • 常用设备有集线器、中继器、调制解调器、网线、双绞线、同轴电缆。
    它主要关心的是通过物理链路从一个节点向另一个节点传送比特流,物理链路可能是铜线、卫星、微波或其他的通讯媒介。总的来说关心链路的机械、电气、功能和规程特性。

网络适配器(网卡):

以太网协议规定,接入网络的设备都必须安装网络适配器,数据包必须是从一块网卡传送到另一块网卡。而网卡地址就是数据包的发送地址和接收地址,有了MAC地址以后,以太网采用广播形式,把数据包发给该子网内所有主机,子网内每台主机在接收到这个包以后,都会读取首部里的目标MAC地址,然后和自己的MAC地址进行对比,如果相同就做下一步处理,如果不同,就丢弃这个包。链路层对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网络协议)协议栈

能够在多个不同网络间实现信息传输的协议簇。对互联网中各部分进行通信的标准和方法进行了规定。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。

  1. 应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层,为应用进程提供服务。
    还能加密、解密、格式化数据。建立或解除与其他节点的联系,可充分节省网络资源。
  2. 传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享
  3. 网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;进行网络连接的建立和终止以及IP地址的寻找等功能。
  4. 网络接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。
    传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。
  5. TCP对应的应用层协议
    FTP:文件传输协议,21端口。
    Telnet:远程登陆的端口,23。
    SMTP:简单邮件传送协议,25。
    POP3:和SMTP对应,用于接收邮件,110。
    HTTP:超文本传输协议,80。
  6. UDP对应的应用层协议
    DNS:域名解析服务,53号。
    SNMP:简单网络管理协议,161号。
    TFTP(Trival File Transfer Protocal):简单文件传输协议,69。

各个协议介绍

1. UDP协议:
定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息,当数据包到达主机以后,就可以根据端口号找到对应的应用程序。UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到,可靠性较差,TCP可以解决这个问题,提高网络可靠性。

2. TCP协议:
传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。
TCP就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。为了保证传输的可靠性,TCP协议在UDP基础之上建立了三次对话的确认机制,即在正式收发数据前,必须和对方建立可靠的连接。TCP数据包和UDP一样,都是由首部和数据两部分组成,唯一不同的是,TCP数据包没有长度限制,理论上可以无限长,但为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

TCP与UDP区别总结?
TCP面向连接(如打电话要先拨号建立连接)提供可靠的服务,负载较高,采用虚电路;
TCP协议的发送方要确认接收方是否收到数据段(3 次握手协议)。
TCP的可靠体现在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。
UDP是无连接的,发送数据之前不需要建立连接;尽最大努力交付,不保证可靠交付。
UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
每一条TCP连接只能是点到点的;
UDP支持一对一,一对多,多对一和多对多的交互通信。
TCP对系统资源要求比UDP较多,TCP首部开销20字节;
TCP协议在传送数据段的时候要给段标号。
UDP的首部开销小,只有8个字节。
UDP 适合一次性传输较小数据的网络应用,如DNS,SNMP等。
TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;
UDP面向报文(一次交付一个完整的报文,报文不可分割,报文是UDP数据报处理的最小单位)。
TCP协议采用窗口技术和流控制当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。TCP丰富的功能有时会导致不可预料的性能低下,但是我们相信在不远的将来,TCP可靠的点对点连接将会用于绝大多数的网络应用。 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件协议,POP、SMTP等邮件传输协议。 在日常生活中,常见使用TCP协议的应用如下:浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输。
当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。比如,日常生活中,常见使用UDP 协议的应用如下:QQ语音 QQ视频 TFTP。
TCP 的缺点:慢,效率低,占用系统资源高,易被攻击。TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的 CPU、内存等硬件资源。而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用, 实现DOS、DDOS、CC等攻击。
UDP 的优点: 快,比TCP稍安全。UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP 是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP 被攻击者利用的漏洞就要少一些。但 UDP 也是无法避免攻击的,比如:UDP Flood 攻击……
UDP 的缺点:不可靠,不稳定。因为UDP没有TCP 那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

什么是三次握手四次挥手?tcp为什么要三次握手?
为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
TCP三次握手过程?
A.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
B.第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
C.第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据。
一些重要的概念:
1.未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN 包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
2.backlog参数:表示未连接队列的最大容纳数目。SYN-ACK重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
3.半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

TCP 三次握手的过程以及对应的状态转换
A.客户端向服务器端发送一个SYN包,包含客户端使用的端口号和初始序列号x;
B.服务器端收到客户端发送来的SYN包后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号xx1和服务器端的初始序列号y;
C.客户端收到服务器端返回的SYNSACK报文后,向服务器端返回一个确认号为yy1、序号为xx1的ACK报文,一个标准的TCP连接完成。

客户端先发送FIN,进入FIN_WAIT1状态,用来关闭Client到Server的数据传送服务端收到FIN,发送ACK,进入CLOSE_WAIT状态,客户端收到这个ACK,进入FIN_WAIT2状态。服务端发送FIN,进入LAST_ACK状态,用来关闭Server到Client的数据传送客户端收到FIN,发送ACK,进入TIME_WAIT状态,服务端收到ACK,进入CLOSE状态(等待2MSL时间,约4分钟。主要是防止最后一个ACK丢失。)

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

TCP如何保证可靠传输?
校验和、序列号、确认应答、超时重传、连接管理、流量控制、拥塞控制
a.三次握手。
b.将数据截断为合理的长度。应用数据被分割成 TCP 认为最适合发送的数据块(按字节编号,合理分片)
c.超时重发。当TCP发出一个段后,启动一个定时器,若不能及时收到一个确认就重发。
d.确认应答:对于收到的请求,给出确认响应。
e.校验和:校验出包有错,丢弃报文段,不给出响应。
f.序列号:对失序数据进行重新排序,然后才交给应用层。
g.丢弃重复数据:对于重复数据 , 能够丢弃重复数据。
h.流量控制。TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
i.拥塞控制。当网络拥塞时,减少数据的发送。

3. IP协议
制定了一套新地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的IP地址。IP协议将这个32位的地址分为两部分,前面部分代表网络地址,后面部分表示该主机在局域网中的地址。如果两个IP地址在同一个子网内,则网络地址一定相同。为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过按位与运算后就可以得到网络地址。

4. ARP协议:Address Resolution Protocol
地址解析协议,是根据IP地址获取MAC地址的一个网络层协议
发送ARP请求的以太网数据帧广播到以太网上的每个主机,ARP请求帧中包含了目的主机的IP地址。目的主机收到了该ARP请求之后,会发送一个ARP应答,里面包含了目的主机的MAC地址。**ARP高速缓存(即ARP表)**是 ARP地址解析协议能够高效运行的关键。

ARP协议工作原理:
1.每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
2.主机(网络接口)新加入网络时(也可能只是mac地址发生变化,接口重启等),会发送免费ARP报文把自己IP地址与Mac地址的映射关系广播给其他主机。
3.网络上的主机接收到免费ARP报文时,会更新自己的ARP缓冲区。将新的映射关系更新到自己的ARP表中。
4.某个主机需要发送报文时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址等。
当本网络的所有主机收到该 ARP 数据包时:
(A)首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包。
(B)如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖。
(C) 然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC。
源主机收到 ARP 响应包后。将目的主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。
工作原理:ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出包头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

5. RARP反向地址转换协议
网络层协议,RARP与ARP工作方式相反。
RARP只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址。
工作原理
(1) 网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的MAC地址。主机从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该主机的IP地址。
(2) RARP服务器收到RARP请求数据包,为其分配IP地址,并将RARP回应发送给主机。
(3) PC1收到RARP回应后,就使用得到的IP地址进行通讯。
6. 路由交换协议
指路由系统将整个互联网划分为许多个自治系统的集合,每个自治系统由一个16比特的号码来表示。自治系统在域边界之内运行局部路由协议或内部网关协议,以维持一个一致的网络拓扑结构视图。而在域边界之间则通过执行一种称为边界网络协议的外部网关协议来构成一个全局的连通域。路由协议按路由算法一般划分为距离向量协议和链路状态协议两类。
距离向量协议,使用中继计数表示源节点到目的节点的距离;
链路状态协议:最短路径算法。

6.1 rip协议
动态路由选择协议(网络层协议),是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量来衡量到达目的网络的路由距离。
RIP通过UDP报文进行路由信息的交换,使用的端口号为520
工作原理
RIP路由协议用“更新(UNPDATES)”和“请求(REQUESTS)”这两种分组来传输信息的。每个具有RIP协议功能的路由器每隔30秒用UDP520端口给与之直接相连的机器广播更新信息。并且用“路程段数”(即“跳数”)作为网络距离的尺度。每个路由器在给相邻路由器发出路由信息时,都会给每个路径加上内部距离。
路由器的收敛机制
任何距离向量路由选择协议都有一个问题,路由器不知道网络的全局情况,必须依靠相邻路由器来获取网络的可达信息。由于路由选择更新信息在网络上传播慢,距离向量路由选择算法有一个慢收敛问题,这个问题将导致不一致性产生。
RIP较少路由收敛机制带来的问题
1.记数到无穷大机制:RIP协议允许最大跳数为15。大于15的目的地被认为是不可达。当路径的跳数超过15,这条路径才从路由表中删除。
2.水平分割法:路由器不向路径到来的方向回传此路径。当打开路由器接口后,路由器记录路径是从哪个接口来的,并且不向此接口回传此路径。
RIP的缺点
1.由于15跳为最大值,RIP只能应用于小规模网络;
2.收敛速度慢;
3.根据跳数选择的路由,不一定是最优路由。

6.2 OSPF协议
Open Shortest Pass First 开放最短路径优先协议,是一个最常用的内部网管协议,是一个链路状态协议。(网络层协议)
原理
OSPF组播的方式在所有开启OSPF的接口发送Hello包,用来确定是否有OSPF邻居,若发现了则建立OSPF邻居关系,形成邻居表
之后互相发送LSA(链路状态通告)相互通告路由,形成LSDB(链路状态数据库)
再通过SPF算法,计算最佳路径后放入路由表。

破坏逆转的水平分割法:忽略在更新过程中从一个路由器获取的路径又传回该路由器。
保持定时器法:防止路由器在路径从路由表中删除后一定的时间内(通常为180秒)接受新的路由信息。保证每个路由器都收到了路径不可达信息。
触发更新法:当某个路径的跳数改变了,路由器立即发出更新信息,不管路由器是否到达常规信息更新时间都发出更新信息。

7. dns

将主机域名转换为ip地址,属于应用层协议,使用UDP传输。
解析顺序
(1)主机向本地域名服务器的查询一般都是采用递归查询。
(2)本地域名服务器向根域名服务器的查询的迭代查询。
(3)浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。
解析过程
(1)当用户输入域名时,浏览器先检查自己的缓存中是否存在该域名映射的ip地址,有则解析结束。
(2)若没命中,则检查操作系统缓存(如Windows的hosts)中有没有解析过的结果,有则解析结束。
(3)若LDNS没有命中就直接跳到根域名服务器请求解析。根域名服务器返回给LDNS一个主域名服务器地址。此时LDNS再发送请求给上一步返回的gTLD(通用顶级域),接受请求的gTLD查找并返回这个域名对应的Name Server的地址。Name Server根据映射关系表找到目标ip,返回给LDNS。
(4)LDNS缓存这个域名和对应的ip, 把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束。

8. ssh协议:Secure Shell的缩写;

SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有 UNIX平台—包括 HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行 SSH。
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。
通过使用 SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"。
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x 和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。
OpenSSH 2.x同时支持SSH 1.x和2.x。

SSH的安全验证是如何工作的从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击
第二种级别(基于密匙的安全验证)
需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。用这种方式,你必须知道自己密匙的口令。
但是,与第一种级别相比,第二种级别不需要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。

HTTP&HTTPS

  1. 一次完整的HTTP请求过程
    域名解析 --> 发起TCP 3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。
  2. https 的建立过程
    a、客户端发送请求到服务器端
    b、服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在
    c、客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端
    d、服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端
    e、客户端使用共享密钥解密数据
    f、SSL加密建立流量分析
  3. Https 的作用
    内容加密建立一个信息安全通道,来保证数据传输的安全;
    身份认证确认网站的真实性 ;
    数据完整性防止内容被第三方冒充或者篡改 。
  4. HTTPS和HTTP的区别:
    A.HTTP协议传输的数据都是未加密的,也就是明文的,http是超文本传输协议,信息是明文传输,因此使用HTTP协议传输隐私信息非常不安全。
    B.HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
    C.https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
    D.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的。
  5. http长连接和短连接的区别
    HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
    而从HTTP/1.1起,默认使用长连接,用以保持连接特性。

OSI(开放系统互联基本参考模型)七层结构及TCP/IP协议栈相关推荐

  1. 二网络专题OSI七层模型、TCP/IP协议栈

    一.OSI七层模型 OSI由ISO(国际标准委员会)规定. OSI七层模型 层级 名称 常用协议 7 应用层 http. 应用层 6 表示层 LLP 5 回话层 ssl.TLS 4 传输层 tcp.u ...

  2. 计算机网络.第一节课.笔记.有效数据率、OSI七层结构、TCP/IP四层、网络协议三要素、时延、广域网WAN、局域网LAN、电路交换、报文交换、分组交换

    目录 互联网 基础结构发展 组成 计算机网络 性能特征 非性能特征 分类 按范围分 按使用者分 交换方式 协议 三要素 层次 为什么分层 分了什么层 名词 解释 网络接口卡 即网卡,缩写为NIC.是一 ...

  3. 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络

    作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识. 废话不多说!下面就逐一展开对这两个网络架构知识的说明: 一.OSI七层网络协议 OSI是Open System I ...

  4. OSI七层网络、TCP/IP五层网络架构、二层/三层网络

    一.OSI七层网络协议 OSI是Open System Interconnect的缩写,意为开放式系统互联. OSI参考模型各个层次的划分遵循下列原则: 1)根据不同层次的抽象分层 2)每层应当有一个 ...

  5. OSI 七层模型和TCP/IP模型及对应协议

    OSI 七层模型和TCP/IP模型及对应协议图: 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于不同层的中继系统具有不同的名称. 一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部 ...

  6. 计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型(转载)

    PS:原文写的太好了,忍不住转载了 <计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型> 文章目录 一.七层?四层? 1.为什么需要协议? 2.OSI七层模型是干什么的? 3. ...

  7. OSI七层模型、TCP/IP五层(或四层)模型

    要说OSI七层模型和TCP/IP五层(或四层)模型,我们先做问题得拆解,1.什么 是OSI?2.七层模型是那些?如何划分?有那些功能?3.有了OSI七层模型,我们为什么还要引入TCP/IP层模型以及他 ...

  8. 【计算机网络基础】-- OSI的七层模型和TCP/IP的五层模型

    [计算机网络基础]-- OSI的七层模型和TCP/IP的五层模型   大家好,我是Lampard~~ 欢迎来到计算机网络基础系列的博客 OSI七层模型 开放式系统互联通信参考模型(英语:Open Sy ...

  9. OSI七层模型与TCP/IP四层模型

    OSI七层模型与TCP/IP四层模型 OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名"开放式系统互联通信参考模型&q ...

最新文章

  1. python使用ElementTree解析XML文件
  2. [转]wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容) 实例介绍
  3. 【详细】嵌入式软件学习问题汇总(二)何为ARM(那些你得知道的事)?
  4. php源码旅行网站模板,背包客旅行扁平网站模板
  5. Git - git push origin master 报错的解决方法 出现[rejected] master -」 master (non-fast-forward)问题解决
  6. 动态规划(DP)经典模型
  7. 神雕侠侣手游mm虚拟服务器,【神雕侠侣】(神雕传说)手游虚拟机镜像一键服务端+配套安卓客户端+本地验证+启动教程...
  8. 数据库服务器如何备份详细教程!
  9. 差分放大电路知识总结
  10. 托科技的福,学不好外语就别学了!| 技术前沿洞察
  11. redis分布式事务锁
  12. [Linux][问题解决]Linux访问本地网站可以,但是外部访问不行
  13. IDEA 运行maven项目时出错:Error java:错误: 不支持发行版本 XXX 5,12,14等
  14. html5 java 实现 微信获取认证身份信息
  15. Element使用方法
  16. 我敢打赌,你猜不到去年电影国内票房最高的演员是谁
  17. hzk组合_HZKM1-400/32002塑壳断路器样本:湘湖电器
  18. 微信下载app,提示右上角打开遮罩HTML代码
  19. Git查看某次提交的修改文件的简略信息
  20. mysql 命令 中文_mysql命令行中文问题

热门文章

  1. 官方不支持,我来支持,autojs支持db操作
  2. 将GBK转换成UTF8
  3. IOS开发教程第一季之03多线程day3--最大并发数,队列的暂停,取消和恢复、操作优先级、线程监听、多线程下UITableView显示图片案例
  4. 第三方Android应用市场横向对比大测评
  5. 机房收费系统——UML用例图
  6. linux动态库修改名称(修改库文件内容)
  7. Chrome标签整理
  8. 查看DB2数据库版本的方法
  9. springboot国际化配置中英文切换
  10. mac下git使用ssh时候的一个小问题:Permission denied (publickey). fatal: Could not read from remote repository.