网络原理
文章平均质量分 93
翁佳明
只有一种英雄主义
展开
-
【网络编程】Servlet | Maven | 创建程序的七个步骤 | 部署方式 | 访问出错
resp.getWriter() 会获取到一个流对象, 通过这个流对象写入的数据会被 构造成一个 HTTP 响应的 body 部分, Tomcat 会把整个响应转成字符串, 通过 socket 写回给浏览器.Maven可以帮助我们管理好依赖关系,同时Maven的打包功能也非常强大,方便集成到自动化环境中。写代码的初心,是能够高效率的解决实际问题。以在HTTP响应报文中,要显示的告诉浏览器,返回的body的字符集是什么。当tomcat收到一个GET请求的时候,就有可能执行到这个子类的方法中。原创 2024-05-09 16:12:30 · 713 阅读 · 0 评论 -
【网络编程】Tomcat | 目录结构 | HTTP服务器
使用HTTP进行通信,涉及到HTTP客户端(浏览器、Postman、爬虫等待)和HTTP服务器。bin:放置的是tomca的一些相关可执行脚本(startup.bat、startup.sh…8080是Tomcat的端口号。tomcat的配置主要是通过xml的方式来提供。webapps中,每个目录都是一个webapp(包含了一个网站的后端代码和前端代码)一个程序的功能可能是非常丰富的,需要按需开启某些功能,通过配置文件进行修改。动态页面:根据用户输入的不同内容,产生不同的结果。静态页面:页面的内容是固定的。原创 2024-05-09 16:08:08 · 170 阅读 · 0 评论 -
【网络原理】HTTPS | 对称加密 | 非对称加密 | 中间人攻击 | 证书 | 公钥 | 私钥
公证机构通过审核,会向服务器颁发一个“证书”(包含域名、公钥、证书的过期时间、以及数字签名等)颁发证书的时候,公共机构就会针对证书中的各个属性,计算出校验和,并针对这个校验和用公证机构自己的私钥进行非对称加密,得到数字签名。就需要每个客户端在和服务器建立连接的时候,就把秘钥生成出来(涉及到随机数机制,确保密钥都不相同)客户端再把自己的密钥传输给服务器。 非对称加密中,有一对秘钥(公钥和私钥)可以使用公钥加密,私钥解密。通过引入第三方的“公证机构”,由“公证机构”证明的公钥,就是可以信任的公钥。原创 2024-05-08 10:24:31 · 894 阅读 · 0 评论 -
【网络原理】HTTP协议 | 报文格式 | Fiddler抓包 | HTTP请求 | HTTP响应 | 构造HTTP请求
Cookie按照键值对和形式进行组织(键值对是由程序员自定义的和query string类似)后续再请求这个服务器的时候,就会把Cookie中的内容自动代入到请求中,再发给服务器。(这个资源可能是硬盘的数据、内存的数据、通过网络访问其他服务器拿到的数据、通过CPU计算出来的一些数据)这个目录结构怎么写,和后续服务器代码的编写程序密切相关。 HTTP的响应也是文本格式的,这里的二进制乱码是因为被压缩了。 后续给服务器提交的请求,不同的Content-Type,服务器处理的逻辑的不同的。原创 2024-05-08 09:48:57 · 732 阅读 · 0 评论 -
【网络原理】以太网协议 | 以太网数据帧格式 | DNS域名解析系统
由于MAC地址比IP地址能表示的范围大,所以目前MAC地址足够用,且每个设备都有唯一的MAC地址。IP数据报的分包拆包,大概率是因为MTU引起的,而不是触发64KB上限。 使用IP地址,来描述设备在网络上的位置。 最早的域名解析系统,是通过一个简单的文件来实现的 :hosts文件。 具体的转发:交换机内部也有一个数据结构叫“转发表”,类似于哈希的映射,不一定是软件实现的,可能是硬件实现的。 源MAC和目的MAC会根据转发的过程,每到达一个节点,向下一个节点走时,源MAC和目的MAC都会改变。原创 2024-04-30 13:43:33 · 634 阅读 · 1 评论 -
【网络原理】网络层IP协议 | IP报文格式 | IP地址 | 地址管理 | 路由选择
TTL的单位是次数。 内网IP无法在广域网上使用,在经过运营商路由器时(也是一个NAT设备),就会对数据包报头的源IP地址进行替换,转换成外网IP。 IP数据报转发的时候,每个路由器都是无法知道网络的“全貌”的,只知道一些局部信息(一个路由器能够知道哪些设备和它是相连的)。 之前提到,UDP天然支持广播,使用UDP socket给这个地址发送UDP数据报,此时局域网内所有的设备,都能收到这个设备。如果一个IP地址,主机号全0,当前这个IP就表示“网络号”,代表当前的局域网,不能划分给主机。原创 2024-04-30 13:40:59 · 1304 阅读 · 1 评论 -
【网络原理】TCP协议 | TCP的报文格式 | 三次握手 | 四次挥手 | 可靠传输 | 确认应答 | 超时重传 | 滑动窗口 | 流量控制 | 拥塞控制 | 延时应答 | 捎带应答 | 粘包问题
上述重传中,没有额外的操作,哪个数据丢了,就重传哪个(快速重传),是滑动窗口下,超时重传的变种。让A先按照比较慢的速度发送数据(小的窗口),如果数据传输过程非常顺利,没有丢包,再一步步尝试使用更大的窗口,更高的速度进行发送。 假设当前的接收方缓冲区的大小是4000,拿到1000的数据后,通过ACK报文,把剩余的3000大小,返回给发送方。 此时,暂停发送数据后,A虽然不传输业务数据了,仍然会周期性的发送一个“窗口探测包”,并不携带业务数据,只是为了触发ACK,从而查询接收方的接收缓冲区剩余空间。原创 2024-04-29 10:56:43 · 778 阅读 · 2 评论 -
【网络原理】UDP协议 | UDP报文格式 | 校验和 | UDP的特点 | 应用层的自定义格式
应用层和程序员接触最密切,在应用层中,很多时候都是程序员“自定义”应用层协议的。而协议就是一种约定,程序员在代码中规定好,数据如何进行传输自定义协议:1.根据需求,明确要传输的信息。2.约定好信息按照什么格式来组织。原创 2024-04-29 10:40:04 · 1499 阅读 · 0 评论 -
【网络编程】TCP流套接字编程 | Socket类 | ServerSocket类 | 文件资源泄露 | TCP回显服务器 | 网络编程
如果客户端和服务器建立连接,服务器的应用程序不需要任何操作,系统内核直接完成了连接建立的流程(三次握手),完成流程后,就会在内核的队列中排队(每个ServerSocket都会有这个队列)。此时第二个客户端也过来建立连接,连接建立成功后,连接对象就会在内核的队列里面,等待accept把连接取出来,在代码中处理。 让两个循环能够“并发”执行,各执行各的,不会因为进入循环而影响另一个循环。 但是clientSocket,每个循环中,每有一个新的客户端来建立连接,都会创建出新的clientSocket。原创 2024-04-26 19:13:00 · 1528 阅读 · 0 评论 -
【网络编程】网络编程概念 | TCP和UDP的区别 | UDP数据报套接字编程 | Socket
通过网络,让两个主机之间能够进行通信。基于通信来完成一定的功能。 进行网络编程的时候,需要操作系统提供一组API,通过这些API来完成。这些API可以认为的应用层和传输层之间交互的路径。这些API称为Socket API。通过一套Socket API 可以完成不同主机、不同系统之间的网络通信。 传输层提供的网络协议主要有两个:TCP、UDP。这两个协议的特性差异很大,会导致使用这两种协议进行网络编程,会存在一定的差别。系统就分别提供了两套API。原创 2024-04-25 21:37:31 · 1379 阅读 · 1 评论 -
【网络原理】网络传输的基本流程 | 网络通信 | 协议分层 | 网络模型 | TCP/IP五层网络模型 | OSI七层网络模型 | IP | 端口号 | 本机环回
(上层协议调用下层协议,下层协议给上层协议提供支持)此时即使协议比较多,也可以完成相关工作。 上述描述的规则,就是此处我们约定的应用层协议。应用层协议中,具体用几个字段,字段的顺序,什么分隔符都可以由程序员根据具体的场景和具体的需求来自主决定。 QQ应用程序,把用户A输入的“nb woc”,打包成一个应用层的数据报(这个数据报的格式,只有qq的程序员知道) 通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。 通过IP协议,对网络层数据报进行解析,去掉报头,拿到载荷。原创 2024-04-25 21:33:29 · 1158 阅读 · 0 评论