计算机网络
计算机网络
网络分层模型
OSI七层模型
TCP/IP四层模型
-
应用层 :
主要提供两个终端设备上应用程序之间信息交换的服务。
常见协议:
- HTTP(超文本传输协议)
- SMTP(简单邮件发送协议)
- POP3/IMAP(邮件接收协议)
- FTP(文件传输协议):传输时不会对数据进行加密。建议
SFTP
- Telnet(远程登录协议)
- SSH(安全的网络传输协议)
- RTP(实时传输协议)
- DNS(域名管理系统)
-
传输层
负责向两台终端设备进程之间的通信提供通用的数据传输服务。
常见协议:
- TCP(传输控制协议):提供 面向连接 的,可靠 的数据传输服务
- UDP(用户数据协议):提供 无连接 的,尽最大努力 的数据传输服务(不保证数据传输的可靠性),简单高效
-
网络层
负责为分组交换网上的不同主机提供通信服务
常见协议:
- IP(网际协议)
- ARP(地址解析协议):解决了IP地址转MAC地址的一些问题
- ICMP(互联网控制报文协议)
-
网络接口层
可以把网络接口层看做是数据链路层和物理层的合体
-
数据链路层
- 封装成帧
- 透明传输
- 可靠传输
- 差错检验(CRC)
-
物理层
负责0、1比特流与电压的高低之间的转换
常见协议:
- PPP(点对点协议)
- Ethernet(以太网)
- MAC协议
-
HTTP协议特点
- 基于请求-响应模式。请求从客户端发出,最后服务器端响应该请求并返回HTTP报文
- 无连接。无连接指限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接
- 无状态。HTTP协议不保存请求、响应,不作持久化处理。(可用cookie保存)
从输入URL到页面展示的过程(HTTP工作流程)
- DNS解析 :获取域名对应的IP地址
- 建立 TCP连接
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束,关闭TCP连接
HTTP与HTTPS的区别
-
端口号
HTTP默认80,HTTPS默认443
-
URL前缀
HTTP的URL前缀是
https://
,HTTPS的前缀是https://
-
安全性和资源消耗
HTTP安全性没有HTTPS高(HTTPS传输的内容进行了加密),但HTTPS比HTTP耗费更多服务器资源
-
搜索引擎优化
搜索引擎更青睐使用HTTPS协议的网站
HTTP状态码
- 1xx:请求正在处理
- 2xx: 请求成功响应
- 200:成功响应
- 201:请求成功创建
- 204:成功响应,但无内容
- 3xx: 重定向消息
- 4xx: 客户端错误
- 400:错误请求
- 401:未授权
- 403:禁止访问
- 404:页面未找到
- 5xx: 服务器错误
- 500:服务器内部错误
- 502:网关错误
- 503:服务不可用
cookie和session的区别
- cookie将数据保存在客户端
- session将数据保存在服务端,安全性更高
GET和POST的区别
- GET通常用于获取或查询资源,POST通常用于创建或修改资源
- GET请求多次重复执行不会改变资源状态,POST请求每次执行都可能产生不同的结果或影响资源状态
- GET请求的参数通常放在URL中,POST请求的参数同在放在请求体(body)中,Get的安全性没有POST高
PUT在多次请求时,产生和单次请求同样的效果,即没有产生新的资源。
举例来说,当你在编辑博客时,后台提供了一个API:test.如果你发送n次test请求,后台始终都只产生了一篇文章,说明前面的请求被覆盖了,那么这个test在多次请求中没有副作用,则它使用的应该是幂等方法Put.如果n次请求后,后台产生了n篇文章,那么test则是非幂等方法。
DNS :域名管理系统,解决域名和IP地址的映射问题
DNS是应用层协议,可以在TCP、UDP协议之上运行,端口为53
DNS服务器的类别
- 根DNS服务器 : 提供顶级域DNS服务器,目前世界上只有 13 组根服务器,我国境内目前仍没有根服务器。
- 顶级域DNS服务器: 顶级域是指域名的后缀,如
com
、org
、net
和edu
等 - 权威DNS服务器
- 本地DNS服务器
TCP与UDP(传输层)
TCP与UDP的区别
TCP | UDP | |
---|---|---|
是否面向连接 | 是 | 否 |
是否可靠 | 是 | 否 |
是否有状态 | 是 | 否 |
传输效率 | 较慢 | 较快 |
传输形式 | 字节流 | 数据报文段 |
首部开销 | 20 ~ 60 bytes | 8 bytes |
是否提供广播或多播服务 | 否 | 是 |
TCP与UDP的应用场景
- TCP用于对传输准确性要求特别高的场景,如文件传输、发送和接收邮件、远程登录等。
- UDP一般用于即时通信,如语音、视频等
运行在TCP协议上的协议
- HTTP协议
- HTTPS协议
- FTP协议
- SMTP协议
- POP3/IMAP协议
- Telnet协议
- SSH协议
运行在UDP协议上的协议
- DNS :将域名转换为IP地址
- DHCP协议:动态主机配置协议,动态配置ip地址
TCP三次握手和四次挥手
建立连接——TCP三次握手
一次握手:客户端发送带有 SYN(SEQ=x) 标志的数据包 -> 服务端,然后客户端进入 SYN_SEND 状态,等待服务器的确认;
二次握手:服务端发送带有 SYN+ACK(SEQ=y,ACK=x+1) 标志的数据包 –> 客户端,然后服务端进入 SYN_RECV 状态
三次握手:客户端发送带有 ACK(ACK=y+1) 标志的数据包 –> 服务端,然后客户端和服务器端都进入ESTABLISHED 状态,完成 TCP 三次握手。
三次握手的目的
让双方确认自己与对方的发送与接收是正常的
-
第一次握手:服务端确认了对方发送正常,自己接收正常
-
第二次握手:客户端确认自己和对方发送、接收正常,服务器确认对方发送正常,自己接收正常
-
第三次握手:客户端确认自己和对方发送、接收正常,服务端确认自己和对方发送、接收正常
断开连接——TCP四次挥手
- 第一次挥手: 客户端发送一个FIN(SEQ=x)标志给服务端,用来关闭客户端到服务器的数据传送,然后客户端进入FIN_WAIT-1状态
- 第二次挥手:服务器收到这个FIN(SEQ=x)标志的数据包,他发送一个ACK(ACK=x+1)标志的数据包给客户端,然后服务端进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态
- 第三次挥手:服务器发送一个FIN(SEQ=y)标志的数据包给客户端,然后服务端进入LAST_ACK状态。
- 第四次挥手:客户端发送 ACK (ACK=y+1)标志的数据包->服务端,然后客户端进入TIME-WAIT状态,服务端在收到 ACK (ACK=y+1)标志的数据包后进入 CLOSE 状态。此时如果客户端等待 2MSL 后依然没有收到回复,就证明服务端已正常关闭,随后客户端也可以关闭连接了。
TCP传输可靠性保障
- 基于数据块传输
- 对失序数据包重新排序以及去重
- 校验和
- 超时重传
- 流量控制:使用滑动窗口来控制
- 拥塞控制
TCP的拥塞控制采用的算法
- 慢开始
- 拥塞避免
- 快重传与快恢复
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!