计算机网络
计算机网络
网络模型
OSI 开放系统互连参考模型(7层)
TCP/IP 传输控制协议/网际协议参考模型(5层)
TCP/IP(4层)

传输层
描述
传输层的两个重要协议是用户数据报协议 UDP 和传输控制协议 TCP。
UDP 的主要特点是
- 无连接
- 尽最大努力交付
- 面向报文
- 无拥塞控制
- 支持一对一,一对多,多对一和多对多的交互通信
- 首部开销小(只有四个字段:源端口,目的端口,长度和检验和)
TCP 的主要特点是
- 面向连接
- 每一条 TCP 连接只能是一对一的
- 提供可靠交付
- 提供全双工通信
- 面向字节流
TCP
- TCP 用主机的 IP 地址加上主机上的端口号作为 TCP 连接的端点。这样的端点就叫做套接字(socket)或插口。套接字用(IP 地址:端口号)来表示。每一条 TCP 连接唯一被通信两端的两个端点所确定。
- 网络层为主机提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
- 运输连接的三个阶段,即:连接建立,数据传送和连接释放。
- 主动发起 TCP 连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器。TCP 连接采用三报文握手机制(三次握手)。服务器要确认用户的连接请求,然后客户要对服务器的确认进行确认。
- TCP 的连接释放采用四报文握手机制(四次挥手)。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送时,则发送连接释放通知,对方确认后就完全关闭了 TCP 连接 。
三次握手
第一次握手
建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认。
第二次握手
服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
四次挥手
第一次挥手
首先客户端想要释放连接,向服务器端发送一段TCP报文
第二次挥手
服务器端接收到从客户端发出的TCP报文之后,确认了客户端想要释放连接,随后服务器端结束ESTABLISHED阶段,进入CLOSE-WAIT阶段(半关闭状态)并返回一段TCP报文
第三次挥手
服务器端自从发出ACK确认报文之后,经过CLOSED-WAIT阶段,做好了释放服务器端到客户端方向上的连接准备,再次向客户端发出一段TCP报文
第四次挥手
客户端收到从服务器端发出的TCP报文,确认了服务器端已做好释放连接的准备,结束FIN-WAIT-2阶段,进入TIME-WAIT阶段,并向服务器端发送一段报文
网络通信三要素
IP地址
网络中计算机的唯一标识,不易记忆,可用主机名。
端口号
用于标识进程的逻辑地址,不同进程的标识,netstat -ano
用来唯一标识一个进程。每一个程序都要有一个端口号。
传输协议
通讯的规则常见协议:TCP(传输控制协议),UDP(数据报协议)。
URL
简述
URL 统一资源定位符的简称,Uniform Resource Locator,常常被称为网址,是因特网上标准的资源地址。
https://www.baidu.com/s?tn=baidu&bar=&wd=TianTian#anchor
这个URL中,https就是协议,www.baidu.com就是域名,默认端口是443,/s就是请求的path,
tn=baidu&bar=&wd=TianTian这个就是query(查询参数)
-
URL 只能使用 ASCII 字符集来通过因特网进行发送。
-
由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。
-
URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符。
-
URL 不能包含空格。URL 编码通常使用 + 来替换空格。
URL的构成
| 名称 | 功能 |
|---|---|
| scheme | 访问服务器以获取资源时要使用哪种协议,比如:http,https 和 FTP 等 |
| host | HTTP 服务器的 IP 地址或者域名 |
| port | HTTP 服务器的默认端口是 80,HTTPS默认端口是443,这种情况下端口号可以省略,如果使用了别的端口,必须指明。不同的端口,你可以认为是不同的应用程序。 |
| path | 访问资源的路径 |
| query-string | 发给 http 服务器的数据(参数)。从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。 |
| anchor | 锚点:从“#”开始到最后,都是锚部分,#是用来指导浏览器动作的,#后面的字符串,都会被浏览器解析为位置标识符。 |
HTTP请求报文和响应报文
HTTP 报文是简单的格式化数据块。每条报文都包含一条来自客户端的请求,或者一条来自服务器的响应。它们由三个部分组成:对报文进行描述的 起始行(start line)、包含属性的 首部(header) 块,以及可选的包含数据的 主体(body) 部分。
HTTP-message = start-line(起始行 )
*( header-field CRLF )(头部)
CRLF(空行)
[ message-body ](数据体)
HTTP状态码
1xx 信息类
接受的请求正在处理,信息类状态码
2xx 成功
-
200 OK 表示从客户端发来的请求在服务器端被正确请求。
-
204 No content,表示请求成功,但没有资源可返回。
-
206 Partial Content,该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求 响应报文中包含由 「Content-Range」 指定范围的实体内容。
3xx 重定向
-
301 moved permanently,永久性重定向,表示资源已被分配了新的 URL,这时应该按 Location 首部字段提示的 URI 重新保存。
-
302 found,临时性重定向,表示资源临时被分配了新的 URL。
-
303 see other,表示资源存在着另一个 URL,应使用 GET 方法获取资源。
-
304 not modified,当协商缓存命中时会返回这个状态码。
-
307 temporary redirect,临时重定向,和302含义相同,不会改变method
4XX 客户端错误
-
400 bad request,请求报文存在语法错误。
-
401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息。
-
403 forbidden,表示对请求资源的访问被服务器拒绝。
-
404 not found,表示在服务器上没有找到请求的资源。
-
405 Method Not Allowed,服务器禁止使用该方法,客户端可以通过options方法来查看服务器允许的访问方法
-
5XX 服务器错误
-
500 internal sever error,表示服务器端在执行请求时发生了错误。
-
502 Bad Gateway,服务器自身是正常的,访问的时候出了问题,具体啥错误我们不知道。
-
503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求。
GET 和 POST 的区别
GET 用于获取资源,POST 用于提交资源。
- GET 请求后浏览器会主动缓存,POST 默认情况下不能。
- GET请求一般放在URL中,因此不安全,POST请求放在请求体中,相对而言较为安全。
- GET请求幂等,POST请求不幂等。
- GET请求会一次性发送请求报文,POST请求通常分为两个TCP数据包,首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。
传输数据大小区别:
- GET:特定浏览器和服务器对URL长度有限制
- POST:由于不是通过URL传值,理论上数据不受限
在浏览器地址栏键入URL,按下回车之后会经历以下流程
- 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址
- 解析出 IP 地址后,根据该 IP 地址和默认端口80,和服务器建立TCP连接
- 浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求消息作为 TCP三次握手的第三个报文的数据发送给服务器
- 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器
- 释放TCP连接
- 浏览器加载该 html 文本并显示内容
HTTPS和HTTP区别
HTTPS 要比 HTTP 多了 secure 安全性这个概念,实际上, HTTPS 并不是一个新的应用层协议,它其实就是 HTTP + TLS/SSL 协议组合而成,而安全性的保证正是 SSL/TLS 所做的工作。
SSL
安全套接层(Secure Sockets Layer)
TLS
传输层安全(Transport Layer Security)
具体区别
-
HTTP 是明文传输协议,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
-
HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO,谷歌、百度优先索引HTTPS网页。
-
HTTPS标准端口443,HTTP标准端口80。
-
HTTPS需要用到SSL证书,而HTTP不用。

浙公网安备 33010602011771号