网络原理笔记
目录1 网络中的五元组2 协议分层OSI七层模型TCP / IP五层或四层模型封装和分用3 网络编程套接字Socket套接字网络编程TCP/UDP协议的区别4 TCP/IP协议应用层JSON进程的两个问题UDP协议TCP协议TCP 可靠传输特别重要1 确认应答可靠性机制2 超时重传可靠性机制3 连接管理可靠性机制4 滑动窗口效率机制5 流量控制效率机制6 拥塞控制可靠机制7 延迟应答效率机制8 捎带应答9 面向字节流粘包问题10 异常情况用UDP实现可靠传输(经典面试题)网络层IP地址HTTP/HTTPS1 HTTPHTTP请求RequestURL方法methodHTTP请求报头HeaderHTTP响应解释2 HTTPS一、 HTTPS 的本质二、 为什么要引入 HTTPS背景与威胁三、 HTTPS 的“三把利刃”加密机制四、 核心工作流程HTTPS 握手 (Handshake)五、 数据完整性摘要算法 (Digest) 重点总结三组密钥的配合1 网络中的五元组源IP地址 ---发件人地址源端口号 ---发件人电话目的地址 ---收件人地址目的端口号 --- 收件人电话协议 ---约定那个快递公司买什么东西服务.......2 协议分层OSI七层模型物链网输会表用TCP / IP五层或四层模型四层模型不包括物理层应用层用户自定义的协议与用户打交道接收展示用户的数据只关注物品本身传输层典型的TCPUDP完成端到端的传输的准备确定收送主机的地址的端口号网络层IP协议规划端到端之间的网络路径数据链路层网络接口层以太网协议完成点到点之间的传输每个网络设备之间的传输物理层以太网协议每一层的封装格式封装和分用封装是在发送方进行的对数据的处理分用是在接收方进行的对数据的处理3 网络编程套接字Socket套接字流套接字使用传输层TCP协议一点一点的发送和之前的文件流一样数据报套接字使用传输层UDP协议把一个报文当做一个整体一次性发送网络编程TCP/UDP协议的区别TCPUDP有连接无连接可靠传输不可靠传输面型字节流面相数据宝有接受缓冲区也有发送缓冲区有接受缓冲区无发送缓冲区大小不限大小受限一次最多传输64K全双工全双工4 TCP/IP协议应用层JSON{}表示对象[]表示数组字符串用“”包裹对象的属性用字符串表示双引号包裹属性与属性之间用逗号隔开、最后一个元素没有逗号进程的两个问题一个进程可以绑定多个端口号一个端口号不能被多个进程绑定在操作系统层面一个端口号对应一个进程通过端口号找到对应的进程UDP协议TCP协议TCP 可靠传输特别重要1 确认应答可靠性机制应答在传输层接收对方给发送方的一个回复只是一个标记并没有真实的结果 响应针对请求计算出来的响应是真实数据2 超时重传可靠性机制发送超时接收方收到了数据返回应答的时候超时3 连接管理可靠性机制作用在发送方和接收方初次建立连接的时候确认双方的收发能力初次建立时三次握手断开连接时四次挥手三次握手主机A发送SYN请求生成一个随机数据填充在序号区域主机B接收到主机A发来的SYN请求后在序号的基本上1把结果填充成确认序号中并把ACK标志位置为一表示要进行应答同时生成一个随机数据填充在序号区域并把SYN标志位置为1表示自己发送一个SYN同步请求主机A接收到主机B发来的ACKSYN请求时首先判断ACK表示主机B有应答能力再去判断SYN在序号的基础上1把结果填充在 确认序号中把ACK标志位置为1主机B接收到主机A发来的ACK表示主机A有应答能力网络验证完成建立连接成功4 滑动窗口效率机制异常情况一数据包已经抵达了但是ACK丢了异常情况二数据包直接丢了数据包没有到达主机B滑动窗口与效率窗口越大网络吞吐量越高窗口越大效率越高窗口越小效率越低如果窗口无限大就和UDP一样了5 流量控制效率机制作用用来控制发送方的窗口大小通过接收方返回来的ACK进行反制6 拥塞控制可靠机制作用通过网络的畅通程序来控制窗口的大小7 延迟应答效率机制TCP在应答时并不是每收到一个请求应答一次而是每隔记得应答一次8 捎带应答ACK是系统内核做出的应答传输层发送响应是应用层面的应用层9 面向字节流粘包问题创建一个TCP的Socket同时在内核中创建一个发送缓冲区写和一个接收缓冲区读粘包问题就是每接收到一个报文就把他放入缓冲区在读取报文时不能有效的区分每个数据名称对于粘包问题解决为每个消息定义一个分隔符或者说用一个分隔符来界边一条消息在应用层协议中定义一个区域字段用来表示当前消息的长度10 异常情况程序崩溃正常关机主机掉电或断网用UDP实现可靠传输(经典面试题)网络层IP地址IP地址是指互联网协议地址又译为网际协议地址HTTP/HTTPS1 HTTP超文本传输协议是一种应用广泛的应用层协议Fiddle 抓包工具可以捕获本机发送的所有HTTP请求相当于客户端与服务器端的中间人HTTP请求RequestURL方法methodGET和POST是 HTTP 协议中最基础、最常用的两种请求方法。虽然它们在底层都是通过 TCP/IP 协议传输数据但在设计初衷和具体表现上有着本质的区别。简单来记其核心区别GET 通常用于“获取”数据而 POST 通常用于“提交”数据。以下是它们的详细对比核心区别速览表特性GET 请求POST 请求主要功能从服务器获取资源如请求一个网页、查询数据。向服务器提交数据如提交表单、上传文件。数据传递位置数据附加在URL的末尾Query String以?分割参数间用连接。数据存放在HTTP 报文的主体Body中。数据长度限制受限于浏览器和服务器对 URL 长度的限制通常在 2KB 到 8KB 左右。理论上没有限制实际受限于服务器配置可传输大量数据。安全性较低。数据直接暴露在 URL 中会被保存在浏览器历史记录、书签和服务器日志中。较高。数据不在 URL 中显示不会被保存在浏览器历史记录中。幂等性 (Idempotency)是幂等的。多次执行相同的 GET 请求服务器状态不变得到的结果应该是一样的。非幂等。多次执行相同的 POST 请求可能会在服务器上创建多个资源如重复提交订单。缓存机制请求可以被浏览器缓存也可以被加入书签。请求不会被缓存不能被加入书签。数据类型只允许 ASCII 字符。支持多种数据类型如文本、二进制、JSON、文件等。关键差异深度解析数据的可见性与“安全性”GET的参数就像写在明信片上任何人只要看到 URL 就能看到数据例如https://example.com/search?keywordapple。因此绝对不能用 GET 请求来传输密码或敏感信息。POST的参数放在了信封里Body 中普通用户在地址栏看不到。但这并不意味着绝对安全。如果不使用 HTTPS 协议网络抓包工具依然可以轻易看到 POST 请求体中的明文数据。真正的安全性依赖于 HTTPS 加密而不是 POST 方法本身。幂等性与副作用GET 是安全的、幂等的这意味着你仅仅是去“看”一眼数据无论你看一次还是看一万次服务器上的数据都不会因此改变。这也是为什么浏览器允许你随意刷新 GET 请求的页面。POST 会产生副作用比如在购物网站点击“付款”按钮通常是一个 POST 请求。如果你在付款成功后强行刷新页面浏览器通常会弹出一个警告框“确认重新提交表单”因为再次发送 POST 请求可能会导致你被扣费两次。底层数据包传输差异技术细节在部分浏览器如早期的 Firefox 等和底层机制中发送方式略有不同GET通常产生一个TCP 数据包浏览器将 HTTP Header 和 Data 一并发送出去服务器响应 200 OK 并返回数据。POST有时会产生两个TCP 数据包浏览器先发送 HTTP Header服务器响应 100 Continue浏览器再发送 Data最后服务器响应 200 OK。这种机制的作用是先探测服务器是否愿意接收数据避免在服务器拒绝时浪费带宽上传大量体积的数据包。总结什么时候用哪个使用 GET当你的操作只是为了查询、读取或过滤信息且不需要改变服务器状态时。例如搜索引擎查询、查看商品详情、获取新闻列表。使用 POST当你的操作会改变服务器状态或者需要传输敏感、大量的数据时。例如用户登录注册、发布一条评论、修改个人资料、上传图片文件。HTTP请求报头HeaderHeader的整体格式是“键值对”结构每个键值对占一行键和值之间使用分好分割Host表示服务器主机的地址和端口号Content-Length表示body中的数据长度Content-Type表示请求的body中的数据格式User-Agent (简称 UA)表示浏览器/操作系统的属性Refercookie理解登录过程HTTP响应解释HTTP 状态码Status Code是用来表示服务器对请求的处理结果的。它们被分为五大类每一类都有特定的含义。以下是常见的 HTTP 状态码及其含义的对照表HTTP 状态码分类概览状态码范围类别描述1xx信息性状态码接收的请求正在处理2xx成功状态码请求正常处理完毕3xx重定向状态码需要进行附加操作以完成请求4xx客户端错误状态码服务器无法处理请求客户端原因5xx服务器错误状态码服务器处理请求时出错常用状态码详细列表状态码状态描述语义及常见场景200OK请求成功。表示从客户端发来的请求在服务器端被正常处理了。204No Content请求成功但返回的响应报文中不含实体的主体部分无内容。301Moved Permanently永久性重定向。资源已被分配了新的 URL以后应使用资源现在的 URL。302Found临时性重定向。资源临时移动到了新的 URL希望用户本次能访问新的 URL。304Not Modified未修改。资源未改变可直接使用浏览器缓存。400Bad Request错误请求。请求报文中存在语法错误服务器无法理解。401Unauthorized未认证。当前请求需要用户身份认证常用于登录校验失败。403Forbidden禁止访问。服务器理解请求但拒绝执行如没有访问权限。404Not Found未找到资源。服务器上无法找到请求的资源或 URL 拼写错误。405Method Not Allowed方法不允许。使用了服务器不支持的请求方法如对只支持 GET 的接口发 POST。500Internal Server Error服务器内部错误。服务器端在执行请求时发生了错误常为代码异常。502Bad Gateway网关错误。作为网关或代理的服务器从上游服务器接收到了无效响应。504Gateway Timeout网关超时。服务器作为网关未能及时从上游服务器接收响应。重点说明200 vs 204200 会返回数据如 JSON、HTML204 仅告知成功而不返回任何内容。401 vs 403401 是“你是谁我不知道请登录”403 是“我知道你是谁但你没权力干这事”。404 vs 500404 通常是前端路径写错了或资源被删了500 则是后端代码写得有问题比如触发了空指针异常。2 HTTPS一、 HTTPS 的本质HTTPS (Hypertext Transfer Protocol Secure)并非独立协议而是在HTTP协议的基础上引入了一个加密层通常是SSL或TLS。公式HTTPS HTTP 加密 认证 完整性保护。端口默认使用443端口HTTP 默认使用 80 端口。二、 为什么要引入 HTTPS背景与威胁HTTP 采用明文传输数据在互联网中经过多个节点如路由器、运营商网关时极其不安全。运营商劫持中间节点篡改 HTML 代码。例如下载一个 A 软件由于中间人修改了下载链接最后下成了 B 软件。窃听风险用户的账号、密码、支付信息对中间人完全透明。冒充风险黑客可以伪造一个一模一样的银行网站诱导用户登录。三、 HTTPS 的“三把利刃”加密机制HTTPS 通过混合加密平衡了安全与性能对称加密 (Symmetric Encryption)特点加密和解密使用同一个密钥。优点计算速度非常快。缺点无法安全地将密钥传给对方。如果明文传密钥加密就失去了意义。非对称加密 (Asymmetric Encryption)特点有一对密钥——公钥 (Public Key)和私钥 (Private Key)。公钥加密的数据只能用私钥解。优点解决了密钥传输问题。缺点计算速度慢且存在“中间人伪造公钥”的风险。数字证书 (Digital Certificate) CA 机构解决问题为了证明“公钥确实是该网站的”引入了公正的第三方机构CA (Certificate Authority)。核心内容证书包含网站信息、公钥以及 CA 机构的数字签名。四、 核心工作流程HTTPS 握手 (Handshake)这是面试和理解中最关键的部分其精髓在于用非对称加密来安全地传输对称加密的密钥。客户端请求浏览器连接服务器并索要证书。服务器响应返回包含公钥 A的数字证书。客户端验证浏览器通过内置的 CA 公钥解密证书签名确保证书未被篡改。校验域名、有效期等。生成会话密钥浏览器本地生成一个随机对称密钥 R用于后续正式通信。加密密钥 R浏览器使用服务器证书里的公钥 A对密钥 R进行加密并发送。服务器解密服务器使用只有自己才知道的私钥 A解密拿到密钥 R。加密通信开始从此以后双方的所有数据传输都使用密钥 R进行对称加密。五、 数据完整性摘要算法 (Digest)HTTPS 还利用了哈希函数如MD5或SHA系列来确保内容未被修改。特点定长无论原文多长哈希值长度固定。分散原文改一个字哈希值天差地别。不可逆无法通过哈希值还原原文。逻辑在签名时先计算证书内容的哈希再加密。客户端收到后重新计算对比一致则代表内容完整。 重点总结三组密钥的配合密钥组角色作用CA 私钥/公钥验证官服务器证书的签名与验证防止证书被冒充。服务器 私钥/公钥快递员在握手阶段加密传输“会话密钥”。对称密钥 (R)守护者握手完成后负责海量通信数据的快速加解密。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2562624.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!