一、概述
1、互联网的构成
- 网络边缘:位于互联网边缘与互联网相连的计算机和其他设备,如桌面计算机、移动计算机、服务器、其他智能终端设备
- 网络核心:由互联端系统的分组交换设备和通信链路构成的网状网络
如:分组交换路由器、链路层交换机、通信链路(光纤、铜缆、无线电、激光链路)
2、网络的分类
- 个域网PAN( Personal Area Network ):能在便携式消费电器与通信设备之间进行短距离通信的网络;覆盖范围一般在10米半径以内,如蓝牙耳机等
- 局域网LAN(Local Area Network):局部地区形成的区域网络,如企业网络分布地区范围有限,可大可小,大到一栋建筑、小到办公室内的组网;电脑WLAN接入,打印机共享等等
- 城域网MAN(Metropolitan Area Network ):范围覆盖一个城市的网络
- 广域网WAN(Wide Area Network):覆盖很大地理区域,乃至覆盖地区和国家
3、网络核心的两点功能
- 路由:确定数据分组从源到目标所使用的路径
- 转发:路由器或交换机将接收到的数据分组转发出去
4、网络分层
- OSI七层模型
- 物理层Physical Layer
- 实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽具体传输介质在物理上的差异
- 数据链路层Data Link Layer:实现相邻(Neighboring)网络实体间的数据传输
- 成帧 (Framing):将比特流划分成"帧"的主要目的是为了检测和纠正物理层在比特传输中可能出现的错误,数据链路层功
- 能需借助"帧"的各个域来实现
- 差错控制 (Error Control):处理传输中出现的差错,如位错误、丢失等
- 流量控制 (Flow Control):确保发送方的发送速率,不大于接收方的处理速率,避免接收缓冲区溢出
- 成帧 (Framing):将比特流划分成"帧"的主要目的是为了检测和纠正物理层在比特传输中可能出现的错误,数据链路层功
- 网络层Network Layer:将数据包跨越网络从源设备发送到目的设备(host to host)
- 路由(控制面):选择数据报从源端到目的端的路径,核心:路由算法与协议
- 转发(数据面):将数据报从路由器的输入接口传送到正确的输出接口
- 传输层Transport Layer
- 将数据从源端口发送到目的端口(进程到进程)
- 网络层定位到一台主机(host),传输层的作用域具体到主机上的某一个进程
- 两类模式:可靠的传输模式,或不可靠传输模式
- 可靠传输:可靠的端到端数据传输,适合于对通信质量有要求的应用场景,如文件传输等
- 不可靠传输:更快捷、更轻量的端到端数据传输,适合于对通信质量要求不高,对通信响应速度要求高的应用场景,如语音对话、视频会议等
- 会话层Session Layer
- 利用传输层提供的服务,在应用程序之间建立和维持会话,并能使会话获得同步
- 表示层Presentation Layer
- 关注所传递信息的语法和语义,管理数据的表示方法,传输的数据结构
- 应用层Application Layer
- 通过应用层协议,提供应用程序便捷的网络服务调用
- 物理层Physical Layer
- TCP/IP四层模型
- 网络接口层
- 网络层
- 传输层
- 应用层
- 两种模型的比较
- OSI模型的不足
- 未被实现,缺少厂家支持
- 技术实现糟糕
- TCP/IP模型的不足
- 不具备通用性
- 模型欠缺完整性:未包含物理层与数据链路层
- OSI模型的不足
二、TCP/UDP
- TCP:面向链接的传输
-
可靠传输:数据包有序、无差错到达接收端
-
如何实现可靠传输,基本原则是什么
- 利用ACK确认
- 重传机制
- 差错检测
-
可靠传输实现举例-Stop and Wait(俗称三次握手)
- 建立一条TCP连接需要确定两件事:
- 双方都同意建立连接(知晓另一方想建立连接)
- 初始化连接参数(序号,MSS等)
- 具体过程
- 客户端发送带有SYN标志的数据包
- 服务端发送带有SYN/ACK标志的数据包
- 客户端发送带有ACK标志的数据包
- 建立一条TCP连接需要确定两件事:
-
四次挥手:目的就是确保断开连接时双方都是确认结束的状态
-
具体过程
- 客户端发送一个FIN报文,用来关闭客户端到服务端的数据传输
- 服务端收到这个FIN,发回一个ACK,seq+1
- 服务端发送完数据后,关闭与客户端的连接,发送一个FIN给客户端
- 客户端发回ACK报文确认,并将确认序号+1
-
只有在客户端和服务端都没有数据发送的时候才能断开TCP;客户端发送FIN报文只能保证客户端没有数据;服务端收到客户端的FIN报文只能先回复个确认报文(确认接收),等数据发送完才能给客户端发送FIN报文
-
-
流量控制
- TCP利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。接收方发送的确认报文中的窗口字段可以用来控制发送发窗口的大小,从而影响发送发的发送速率。将窗口字段设置为0,则发送方不能发送数据。
-
拥塞控制
- 拥塞:在某段时间,若对网络中某一资源的需求超过改资源所能提供的可用部分,网络的性能就要变差。
- 拥塞控制:就是为了防止过多的数据注入到网络中,可避免网络中路由器或链路过载
- 为了进行拥塞控制,TCP发送方维持一个拥塞窗口的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接收窗口中较小的一个。
- 算法:
- 慢开始
- 当主机开始发送数据时,如果立即把大量数据注入到网络,可能引起网络阻塞。经验表明,较好的方法是先探测下,即由小到大逐渐增大发送窗口,由小到大逐渐增大拥塞窗口。cwnd初始值为1,每经过一轮,cwmd加倍。
- 拥塞避免
- 拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RRT,cwnd++。
- 快重传和快恢复:能快速恢复丢失的数据包。
- 慢开始
-
- UDP
- TCP和UDP协议的区别
- UDP在传送数据之前不需要先建立连接,远地主机在接收UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式(一般即时通信)
- TCP提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。由于TCP要提供可靠的,面向连接的传输服务(TCP的可靠性体现在TCP在传输数据之前,会有三次握手来建立连接,在数据传输时,有确认、窗口、重传、拥塞控制等机制,在数据传输完,还会四次挥手断开连接),这难免增加了许多开销,如确认,流量控制,计时器记忆连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP一般用于文件传输、发送和接收邮件、远程登录等。
三、HTTP/HTTPS
- HTTP:超文本传输协议是客户端和服务端交互的一种通讯格式(所谓协议就是双方约定好的格式,让双方都能看懂的东西;所谓交互实际上就是【请求】和【响应】)
- HTTP message:客户端和服务端之间传输的数据块
- 组成:起始行(描述)、请求头(message的属性)、请求体(message的数据)、
- 各版本:
- HTTP1.0:无状态,非持久连接
- HTTP1.1:支持长连接和流水线机制、缓存策略优化、部分资源请求及断点续传
- HTTP2.0:目标:提高带宽利用率、降低延迟;增加二进制格式、TCP多路复用、头压缩、服务端推送等功能
- HTTP3.0:底层使用UDP,减少RRT
- HTTPS:HTTP+TLS:增加SSL/TLS(TLS 1.2)层,在TCP之上提供安全机制
- HTTP是无状态协议,可使用Cookie的方式解决
- HTTP message:客户端和服务端之间传输的数据块
- HTTPS:基于SSL的安全HTTP协议
- HTTP和HTTPS的区别
- HTTPS需要证书、URL开头的区别
- HTTP标准的端口是80,HTTPS标准端口443
- OSI模型中,HTTP工作于应用层,HTTPS工作于传输层
- HTTP信息是明文传输,HTTPS则具有安全性的SSL加密传输
四、Cookies/Session
1、Cookies和Session
- Cookie和Session都是用来跟踪浏览器用户身份的会话方式;
- Cookie一般用来保存用户信息;Session通过服务端记录用户的状态
- Cookie数据保存早客户端,Session数据保存在服务端。Session安全性更高。
五、其他
1、域名解析
2、浏览器的服务器交互的方法
- GET:从服务器获取
- POST:向服务器提交数据
- 两者区别
- GET是不安全的,在传输过程中数据是放在URL中,POST的操作对用户是不可见的
- GET请求提交的URL中数据最多8182字节,POST请求本身没有限制(服务器或浏览器做限制)
- GET执行效率比POST高,GET是FORM提交的默认方法
- GET产生一个TCP数据包,POST产生两个TCP数据包(post先发送请求头,后发送数据)
- 字符集的区别
- PUT:向服务器添加数据
- DELETE:删除服务器中的数据