路由是网络层组件
在维护路由表信息的时候,如果在拓扑发生改变后,网络收敛缓慢产生了不协调或者矛盾的路由选择条目,就会发生路由环路的问题。
这种情况下会导致用户的IP数据包不停在网络上循环发送,最终造成网络资源的严重浪费。
RIP协议是一种基于距离度量的路由选择协议。
OSPF(开放最短路径优先)协议解决路由回路问题。
两个原因:
http的安全问题:
https通过使用SSL具有了加密(混合加密)、认证(数字证书,用于存放公钥,保证其不被篡改以及可信性)、完整性保护(摘要算法)等功能。
SSL:安全套接字层,位于传输层与应用层之间的一种协议层。通过相互认证、使用数字签名确保完整性。使用加密保证私密性。以实现客户机服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
如果是两次挥手,客户机请求关闭服务端直接关闭了,有可能服务端的数据并没有传输完成,造成数据丢失。如果是三次挥手,服务端数据传输完成立即关闭连接。可能会导致本次tcp
连接产生的报文残留在网络中。所以需要四次挥手。
TCP是传输控制协议,提供面向连接的可靠的字节流服务。通过三次握手建立连接。之后才能进行数据传输。TCP提供超时重传、流量控制、拥塞控制等功能。
UDP是用户数据报协议,是一个简单的面向无连接的协议。UDP不提供可靠服务,由于传输数据之前不需要建立连接,所以传输速度很快。其主要使用场景有流媒体传输。
利用滑动窗口实现流量控制,如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
客户机经历了:close -> SYN-sent -> estab-listen
服务端经历了:close -> listen -> SYN-RCVD ->estab-listen
拥塞窗口概念。初始化cwnd = 1
慢开始、拥塞避免、快重传、快恢复。
ARP:地址解析协议。
每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
源主机向当前网段的所有主机发送ARP数据包,包含了源主机IP、MAC地址,以及目标主机IP地址。
本地网络的主机收到数据包后检查其中的目标IP是否为自己的。如果不是则忽略,如果是的话就将自己的MAC地址写入数据包,并将数据包中源主机的IP、MAC地址写入自己的ARP缓冲区中。
ICMP是Internet Control Message Protocol
,因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP报文有两种:差错报告报文和询问报文。
封装成帧、透明传输、差错检测(循环冗余检测保证传输过程中的数据准确性)。
网络层协议负责的是提供主机间的逻辑通信,运输层协议负责的是提供进程间的逻辑通信。
静态路由是由管理员手工配置的,适合比较简单的网络或需要做路由特殊控制。而动态路由则是由动态路由协议自动维护的,不需人工干预,适合比较复杂大型的网络。
客户端发出一个请求,在服务器做出响应之前客户端发过来的请求线程会被挂起,这就是阻塞。此时线程只能等完成这次的请求之后才可以去处理其他的事件,这就叫做同步。
客户端发出了一个请求,然后不等服务器处理就直接返回给客户端了。此时请求线程没有被挂起,这就是非阻塞。线程可以去处理其他事件,这就是异步。服务器通过回调函数来处理这个请求。
点到点信道的数据链路层协议:
PPP(point-to-point protocal)
协议:互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。
使用广播信道的数据链路层协议:
载波监听、多点接入、冲突检测协议:
url
中携带域名的IP
地址,并返回给浏览器ip
地址服务器通过三次握手建立TCP
连接HTTP
请求,随后服务器将浏览器请求的资源发送给浏览器TCP
连接(四次挥手)HTTP1.1相较于HTTP1.0 增加了长连接功能,该功能不会主动的去断开一个TCP连接,这样的话就不用每次发送HTTP请求时都重新建立TCP连接。因为重复的建立、断开TCP连接费时又费资源。
HTTP2.0主要有以下几个新特性:
头部压缩、多路复用、二进制帧层
Accept:可以接收的响应内容格式
Connection:客户端想要优先使用的连接类型,keep-alive、upgrade
Host:客户端告诉服务端它请求的资源所在的主机与端口号
cookie:客户端请求时携带的数据
首先,TCP协议建立连接前需要双方确认信息,用于防止伪造连接以及精准控制整个数据传输过程中数据完整有效。这样就会造成TCP连接的资源消耗,其中包括:数据包信息、条件状态、序列号等等。SYN攻击就是故意不完成建立连接所需要的三次握手过程,造成连接一方的资源耗尽。
SYN攻击:
**如何检测:**Linux中使用 netstat -n -p TCP | grep SYN_RECV
命令检测是否被SYN攻击。
如何防范?
主要有两大类,一类是通过防火墙、路由器等过滤网关防护,另一类是通过加固TCP/IP协议栈防范。
HTTP设计为无状态的话服务端就可以根据需求将请求分发到服务集群的任意节点上。有利于做负载均衡。
依靠超时重传实现可靠传输。TCP每发送一个数据报后会开启一个计时器,等待目标服务器确认收到了这个报文段。如果计时器时间内没有收到确认,则会重发这个报文段。
可以
1xx
类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。
2xx
类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。
3xx
类状态码表示客户端请求的资源发送了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向。
4xx
类状态码表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义。
5xx
类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误码。