JavaWeb
文章平均质量分 92
这个作者很懒~~
灰灰快醒醒
一枚大三字节跳动测试开发实习生。。
展开
-
网络原理 - HTTP/HTTPS(4)
(是访问成功,还是失败,还是其它的一些情况...).(学习状态码 -> 为了调试问题. 写服务器时,按照状态码的含义正确使用.原创 2024-02-21 11:42:05 · 1781 阅读 · 20 评论 -
网络原理 - HTTP/HTTPS(3)
header的整体的格式也是"键值对"的结构.每个键值对占一行,键和值之间使用分号进行分割.报头的种类有很多,此处仅介绍几个常见的.原创 2024-02-20 11:35:54 · 2752 阅读 · 42 评论 -
网络原理 - HTTP/HTTPS(5)
HTTPS也是一个应用层协议.在HTTP协议的基础上引入了一个加密层.原创 2024-02-24 07:29:58 · 2166 阅读 · 35 评论 -
网络原理 - HTTP/HTTPS(1)
思考问题:为什么HTTP报文中要存在"空行"?因为HTTP协议中并没有规定报头部分的键值对有多少个.空行就是"报头结束的标记",或者是"报头和正文之间的分隔符".HTTP在传输层依赖TCP协议,TCP是面向字节流的.如果没有这个空行,就会出现"粘包问题".原创 2024-02-18 15:51:36 · 2799 阅读 · 42 评论 -
网络原理-TCP/IP(3) - 三次握手超详解析
TCP的连接是虚拟的,抽象的,目的是让通信双方保存对方信息.在正常情况下,TCP要经过三次握手建立连接,四次挥手断开连接.之前我们在网络编程中的 socket = new Socket(ip, port); 这个操作就是建立连接.而这个操作知识调用了socket的api,真正建立的过程,是在操作系统内核中完成.原创 2024-02-02 07:17:08 · 1464 阅读 · 4 评论 -
网络原理-TCP/IP(4)
之前我们讲过了确认应答策略,对发送的每一个数据段,都要给一个ACK确认应答,收到ACK后再发送下一个数据段.3.收到第一个ACK时,滑动窗口向后移动,继续发送第五个段的数据;来记录当前还有哪些数据没有应答;只有确认过的数据,才能从缓冲区删掉;2.发送前四个段时,不需要等待任何ACK,直接发送;,因为确认应答机制导致了时间大量都花在ACK上.由上图,这就是滑动窗口方法传递数据的原理,就是。4.操作系统内核为了维护这个滑动窗口,需要开辟。5.窗口越大,则网络的吞吐量越高;既然这样一发一收的效率比较低,原创 2024-02-02 18:53:12 · 1626 阅读 · 14 评论 -
网络原理 - HTTP/HTTPS(2)
平时我们俗称的"网址"其实就是说的URL(Uniform Resource Locator统一资源定位符). (还有一个唯一资源标识符,称为uri,严格来说,uri范围比url广).原创 2024-02-19 12:19:44 · 1401 阅读 · 8 评论 -
网络原理-TCP/IP(5)
如果接收数据的主机立刻返回ACK应答,这时候返回的窗口可能比较小.1.假设接收端缓冲区为1M.一次收到了500K的数据;如果立刻应答,返回的窗口就是500K;2.但实际上可能处理端处理的速度很快1,10ms之内就把500K数据从缓冲区消费掉了;3.在这种情况下,接收端处理还远没有到达自己的极限,即使窗口再放大一些,也能处理的过来;4.如果接收端稍微等一会再应答,比如等待200ms再应答,那么这个时候返回的窗口就是1M;原创 2024-02-04 10:41:31 · 3881 阅读 · 16 评论 -
网络原理-TCP_IP(2)
TCP全称为"传输控制协议(Transmission Control Protocol)".协议如其名,要对数据的传输进行一个详细的控制.注意:这个是确保可靠性的最核心的机制了.TCP将每个字节的数据都进行了编号,即为序列号(防止出现先发后至的问题). 每一个ACK都带有确认序列号,意思是告诉发送者,我们已经收到了哪些数据;下一次从哪里开始发.应答报文的确认序号是按照发送过去的最后一个字节的序号+1设定.是确认应答的补充. 这种情况是接收方本来就未收到数据,此时重传理所应当,没有任何问题.但是,主机A未收到原创 2024-01-31 17:43:51 · 1384 阅读 · 17 评论 -
网络原理-TCP/IP(7)
路由表的Destination是网络地址,Genmask是子网掩码,Gateway是下一跳地址,Iface是是发送接口,Flags中U标志标识此条目有效(可以禁用某些条目),G标志标识此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经由路由器转发。就有大佬干脆搭建了一组服务器,来提供域名解析服务(hosts内容放到服务器里了),你某个主机想访问某个域名,就先查询一下域名解析服务器(DNS服务器),查到的结果,就是域名对应的IP,拿着IP进行访问即可.原创 2024-02-17 15:42:39 · 2932 阅读 · 18 评论 -
网络原理-TCP_IP(6)
13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移.其实就是表示当前分片在原报文中的哪个位置,实际偏移的字节数是这个值*8得到的.因此,除了最后一个报文之外,其它报文的长度必须是8的整数倍(否则报文就不连续了).(3位标志字段:第一位保留(保留的意思是现在不用,但是说不定以后要用到).第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文.第三位表示"更多分片",如果分片了话,最后一个分片置为1,其它是0,类似一个结束标记.原创 2024-02-16 14:31:15 · 2149 阅读 · 30 评论 -
网络编程套接字(1)
网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)当然,我们只要满足进程不同就行;所以即使是同一个主机,只要是不同的进程,基于网络来传输数据,也属于网络编程特殊的,对于开发来说,在条件有限的情况下,一般也是在一个主机中运行多个进程来实现网络编程.但是我们一定要明确,我们的目的是提供网络上不同主机,基于网络来传输数据资源进程A:编程来获取网络资源.进程B:编程来提供网络资源.原创 2024-01-26 20:13:29 · 1551 阅读 · 17 评论 -
网络编程套接字(2)
DatagramSocket是UDP的Socket,用于发送和接收数据报.操作系统中有一类文件,就叫做socket文件(普通文件/目录文件:在硬盘上的)DatagramSocket就是对socket文件进行读写,也就是借助网卡发送数据.创建一个UDP数据报套接字的Socket,绑定到本机任意一个随机端口(一般用于客户端)创建一个UDP数据报套接字的Socket,绑定到本机指定的端口(一般用于服务端)从此套接字接收数据报(如果没有收到数据报,该方法会阻塞等待)原创 2024-01-28 18:13:32 · 1054 阅读 · 15 评论 -
网络原理-初识(1)
网络通信传输的数据类型可能有很多种:图片,视频,文本等.同一个类型的数据,格式也可能不同,如发送一个文本字符串"你好"!网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据.通常用"点分十进制"的方式来表示,即a,b,c,d的形式(a,b,c,d都是0~255之间的十进制整数).如果有北,中,南分公司,甚至海外分公司,这些分公司以专线方式连接起来,即称为"广域网".如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集.原创 2024-01-24 21:54:41 · 1295 阅读 · 13 评论 -
网络原理-初识(2)
对于网络协议来说,往往分成几个层次进行定义.网络通信的过程中,需要涉及到的细节,其实非常多.如果要有一个协议来完成网络通信,就需要约定好方方面面的内容,导致非常复杂. 而如果拆分的话,就十分复杂,庞大,因此需要分层.什么是协议分层协议分层类似于打电话时,定义不同层次的协议:某一层的协议替换之后,对于其它层没有影响在这个例子中,我们的协议只有两层;但实际的网络通信会更加复杂,需要分更多的层次.原创 2024-01-25 18:03:06 · 1345 阅读 · 10 评论 -
网络原理-TCP/IP(1)
我们之前编写完了基本的java socket, 要知道,我们之前所写的所有代码都在应用层中,都是为了完成某项业务,如翻译等.关于应用层,后面会有专门的讲解,在此处先讲一下基础知识.应用层对应着应用程序,是程序员打交道最多的一层,调用系统提供的网络api写出的代码都是应用层的应用层这里虽然有很多协议,但程序员应该按照场景,自定义协议.().原创 2024-01-30 17:06:56 · 3973 阅读 · 19 评论