2025.04.30 学习笔记

一、计算机间通信

1.双绞线直连

2.集线器

每次发送消息都会发送到连接内的所有人

3.交换机

在发消息的时候声明本机MAC和目的MAC,交换机内记录MAC地址表记录每一个连接端口和MAC地址,若MAC记录表中没有则广播发送给所有人(泛洪Flooding),当目的MAC收到后回复消息,交换机会把它的端口和MAC记至表中
若端口连接的设备变更,则硬件MAC地址会变,这很麻烦,于是抽象出IP地址。交换机仍将MAC地址与接入端口绑定。计算机初次发给交换机的为目标IP地址,由交换机泛洪后,目标IP返回自己的MAC地址,计算机内维护目标的IP地址与MAC地址映射
由IP地址到MAC地址的过程,就是ARP协议;映射表就是ARP记录表。后续发送IP请求前读自己的ARP表拿到MAC,再递给交换机

4.路由器

当网络规模再增大,交换机直连会导致MAC表爆炸。于是引入路由器,路由器下属同一网段的设备通过交换机连接,不同网段的设备通过路由器组织,路由器内会配置路由表,维护【目标网段/子网掩码】及其对应的【下一跳】,跳到下一台路由器
手动维护路由表在规模增大时很困难,于是有了自动互相学习、自动管理路由表的OSPF(OpenShortestPathFirst)等协议。规模再扩大OSPF疲软时,又使用BGP(BorderGatewapProtocol)等协议

4.1 UDP协议

一台设备有很多应用,发送报文时在MAC、IP的基础上追加端口信息,使得请求可以被正确的app所接受,这种带端口的方式就是UDP协议

4.2 TCP协议

UDP简单粗暴但存在很多问题,所以我们需要设计一个稳定可靠的协议--TCP协议
由于网络不稳定,我们发送的消息很有可能在途中丢失,所以需要设置重试机制,当消息发送失败时重新发送,为了判断是否成功,还需要要求接收方收到消息后必须发送确认消息,这样可以保证消息必答
另外,由于大段内容发送很容易丢失一部分导致需要全部重发,于是我们可以将数据分包,给每个分包配上序号,如果某个分包丢失,重传这个分包的数据即可。由接收方针对每一个分包回复收到确认,根据序号进行排序整理,恢复整块内容
不管是发送方的重传机制,还是接收方的应答和数据整理,都需要计算机分配资源。为了提高计算效率,需要双方约定好一起开启、一起结束,而这个开启与结束就叫做连接的建立与关闭
TCP建立连接时,发送方先传达一个连接意愿,接收方收到后需要响应这个消息(保证消息必答,如果不响应,发送方可能会一直重发),同时接收方还需要表达接受意愿,接收方的意愿同样也需要发送方来响应。
上述这四条消息,中间接收方发送的两条消息可以合并为一条,这就是TCP协议中的三次握手。然后就可以开始传输了
分包数据在实际中并非全部一起发送,由于接收方的处理能力和带宽等因素不确定,可能会导致溢出的数据传输失败,于是需要控制每次传输分包的个数。就有了滑动窗口、拥塞控制等技术,来动态调整分报个数以优化传输流程
发送完成后,需要断开连接,由发送方发送断开意愿,接收方响应消息,当数据接收完毕后,接收方表达断开意愿,发送方回复收到后,双方断开。由于接收方的两条消息中间需要等待数据接收完整后才能表达断开意愿所以无法合并,这是四次挥手

4.3 应用层协议

UDP和TCP是应用层协议的根基,所有的应用层协议都是在他们的基础上建立的

UDP:NFS、TFTP、SNMP、DHCP、NTP、…

TCP:HTTP、HTTPS、TELNET、FTP、POP3、……
随着网络发展壮大,IP地址已经不够用了,于是有NAT协议来缓解。
子网内的计算机向外网发送报文时,网关路由器建立端口映射表,记录【内网ip+内网端口】对应【公网端口】,把报文中的IP和端口改成公网的IP和端口发送出去。
当接收方回应时,再根据报文中的公网端口反推得到内网ip和内网端口,这样减少了公网ip的分配压力
DHCP服务器(路由器)给计算机分配IP地址、网关等。而企业公网IP可以根据运营商提供的静态IP手动配置;家庭公网IP通常使用PPPOE协议向运营商动态“租用”

二、协议

大家统一约定,共同遵守的规范

三、HTTP协议

3.1 协议简介

超文本传输协议(HyperText Transfer Protocol),最常见的应用层协议,由浏览器开发者和网站开发者共同遵守

3.2 工作模式

HTTP基于客户端Client/服务器模式Server(C/S),常见的客户端就是我们的浏览器,而服务器可以简单理解为网站的主机
网站不定时会有人访问,网站主机也一直处于运行状态,随时准备接受用户的访问请求

3.3 工作原理

HTTP定义了浏览器如何向服务器发送请求,以及服务器返回浏览器的相关规范
HTTP请求:是客户端(如浏览器、移动应用或其他类型的客户端软件)向服务器发起的,用于获取资源,与服务器进行交互的消息
HTTP请求遵循HTTP协议规定的相关规范,包括请求行,请求头,空行,请求体。HTTP请求的第一行包括了HTTP方法,请求的资源路径(URL),以及HTTP版本。
请求方法常见有get和post。get主要用于获取资源,如查询操作;而post是用来传递消息的,即数据的增添、修改、删除。如填写用户和密码,修改个人信息,提交表单等

3.3.1 Get方法

输入URL,发送get请求,通过URL传递参数,网站服务器处理请求,参数通过URL传递,所有人可见

get请求可重复执行,执行的结果不会因get请求而发生改变(但会因为别的请求改变了数据而改变

3.3.2 Post方法

发送post请求,服务器接收并处理,可能会改变服务器上的数据,参数通过请求体传递,外部不可见
HTTP响应同样遵守HTTP协议规定的相关规范,包括状态行、响应头、空行、响应体。状态行包括HTTP版本、状态码、状态消息

3.3.3 状态码

用于告知客户端请求处理的结果:

200 OK 请求成功

404 Not Found 请求URL在网站中不存在

500 Internal Server Error 服务器内部错误无法正常处理请求

302 Found(重定向) 请求的资源被临时移动至另外一个位置

401 Unauthorized(未授权)没有权限访问请求的资源

503 Service Unavailable(服务不可用)服务器当前无法处理请求,可能是当前请求太多或其他原因导致的服务不可用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值