局域网(LAN)、城域网(MAN)、广域网(WAN)
拓扑结构
:星型网络、总线型网络、环型网络、树型网络、星型环型网络等;
传输介质
:双绞线网、同轴电缆网、光纤网和卫星网等;
通信协议三部分组成:语义部分、语法部分、变换规则;
IP(Internet Protocol)又称互联网协议,是支持网间互联的数据报协议。
IP 地址分为A、B、C、D、E,每个类别的网络标识和主机标识各有规则。
IP 地址用于唯一地标识网络上的一个通信实体,但一个通信实体可以有多个通信程序同时提供网络服务,此时还需要使用端口。
端口 是一个16位的整数。0~65535
OSI(Open System Interconnect)开放系统互联参考模型
HTTP(HyperText Transfer Protocol,超文本传输协议) 协议是基于TCP的应用层协议,不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式。
HTTPS——HTTP协议的数据传输是明文的,是不安全的,HTTPS 使用了 SSL/TLS
协议进行了加密处理。
HTTPS 协议的主要作用分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种是确认网站的真实性。
HTTP 与 HTTPS 区别
TCP/IP协议族里重要的一点就是分层。
IP
IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网 (LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转 才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP 协议(Address Resolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
TCP
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。按层次分,TCP 位于传输层,提供可靠的字节流服务。
为了准确无误地将数据送达目标处,TCP 协议采用了三次握手 (three-way handshaking)策略。握手过程中使用了 TCP 的标志(flag) —— SYN
(synchronize) 和 ACK
(acknowledgement)。
TCP 连接 (三次握手)
TCP 断开 (四次握手)
DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的协议。它提供域名到 IP 地址之间的解析服务。
URI(Uniform Resource Identifier,统一资源标识符)
URL(Uniform Resource Locator,统一资源定位符)
3 位数字加原因短语。3 位数字中的第一位用来指定状态的类别,共5种。
200:OK
204:No Content
400:Bad Request
404:Not Found
影响一个 HTTP 网络请求的因素主要有两个:带宽和延迟。
为什么连接的时候是三次握手,关闭的时候却是四次握手?
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
如果已经建立了连接,但是客户端突然出现故障了怎么办?
TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
HTTP/2.0
2015
二进制传输
多路复用
多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。
Header压缩
HTTP1.0 中,我们使用文本的形式传输 header,在 header 中携带 cookie 的话,每次都需要重复传输几百到几千的字节,这着实是一笔不小的开销。HTTP2.0 中,我们使用了 HPACK(HTTP2头部压缩算法)压缩格式对传输的 header 进行编码,减少了 header 的大小。并在两端维护了索引表,用于记录出现过的 header,后面在传输过程中就可以传输已经记录过的 header 的键名,对端收到数据后就可以通过键名找到对应的值。
HTTP/1.1
1997年1月公布HTTP/1.1。无状态协议,但为了实现期望的保持状态功能,于是引入了 Cookie 技术。
HTTP/1.0
HTTP 正式作为标准被公布是在 1996年5月,版本命名为 HTTP/1.0。