![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络
一纸一清风
滋滋有味的学习 津津有味的生活
展开
-
TCP标志位
每个TCP段都有一个目的,这是借助于TCP标志选项来确定的,允许发送方或接收方指定哪些标志应该被使用,以便段被另一端正确处理。TCP标志字段是六位的,与所有标志一样,值1表示特定标志为“开”1. FLAG - 紧急指针第一个标志是紧急指针标志,此标志用于将输入数据标识为“紧急”。这样的进入段不必等待直到先前端被接收端消耗,而是直接发送并立即处理。在数据传输流中,主机正在向远程机器...原创 2019-10-14 21:53:44 · 395 阅读 · 0 评论 -
DNS协议的解析过程
1. 主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的 IP 地址,或者是报错,表示无法查询到所需的 IP 地址。2. 本地域名服务器向...原创 2019-10-07 21:31:46 · 345 阅读 · 0 评论 -
域名缓存
为了提高 DNS 查询效率,并减轻服务器的负荷和减少因特网上的 DNS 查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。由于名字到地址的绑定并不经常改变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并处理超过合理时间的项(例如:每个项目两天)。当域名服务器已从缓存中删去某项信息后又被请求查询该项信息,就必须重新到授权管...原创 2019-10-07 21:36:01 · 336 阅读 · 0 评论 -
HTTP 1.0 和 1.1、1.2 的主要变化
HTTP1.1 的主要变化: 1. HTTP1.0 经过多年发展,在 1.1 提出了改进。首先是提出了长连接,HTTP 可以在一次 TCP 连接中不断发送请求。2. 然后 HTTP1.1 支持只发送 header 而不发送 body。原因是先用 header 判断能否成功,再发数据,节约带宽,事实上,post 请求默认就是这样做的。3. HTTP1.1 的 host 字段。由于虚...原创 2019-10-07 21:51:07 · 857 阅读 · 0 评论 -
网络中保活计时器的作用
除时间等待计时器外,TCP 还有一个保活计时器(keepalive timer)。设想这样的场景:客户已主动与服务器建立了 TCP 连接。但后来客户端的主机突然发生故障。显然,服务器以后就不能再收到客户端发来的数据。因此,应当有措施使服务器不要再白白等待下去。这就需要使用保活计时器了。服务器每收到一次客户的数据,就重新设置保活计时器,时间的设置通常是两个小时。若两个小时都没有收到客户端的数据...原创 2019-10-08 15:41:08 · 466 阅读 · 0 评论 -
停止等待协议
停止等待协议是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组;在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认。主要包括以下几种情况:无差错情况、出现差错情况(超时重传)、确认丢失和确认迟到、确认丢失和确认迟到。...原创 2019-10-08 15:44:24 · 723 阅读 · 0 评论 -
浅谈对滑动窗口的理解
TCP利用滑动窗口实现流量控制的机制。滑动窗口是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发送不了数据,所以就有了滑动窗口机制来解决此问题。TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的...原创 2019-10-08 19:36:03 · 550 阅读 · 1 评论 -
浅谈对TCP拥塞控制的理解
拥塞控制和流量控制不同,前者是一个全局性的过程,而后者指点对点通信量的控制。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不至于过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以...原创 2019-10-08 20:34:56 · 339 阅读 · 0 评论 -
TCP粘包是怎么产生的
发送方产生粘包 采用 TCP 协议传输数据的客户端与服务器经常是保持一个长连接的状态(一次连接发一次数据不存在粘包),双方在连接不断开的情况下,可以一直传输数据。但当发送的数据包过于的小时,那么 TCP 协议默认的会启用 Nagle 算法,将这些较小的数据包进行合并发送(缓冲区数据发送是一个堆压的过程);这个合并过程就是在发送缓冲区中进行的,也就是说数据发送出来它已经是粘包的状态了。...原创 2019-10-08 20:39:22 · 313 阅读 · 0 评论 -
HTTPS的工作过程
1. 客户端发送自己支持的加密规则给服务器,代表告诉服务器要进行连接了;2. 服务器从中选出一套加密算法和 hash 算法以及自己的身份信息(地址等)以证书的形式发送给浏览器,证书中包含服务器信息,加密公钥,证书的办法机构;3. 客户端收到网站的证书之后要做下面的事情: 3.1 验证证书的合法性; 3.2 如果验证通过证书,浏览器会生成一串随机数,并用证书中的公钥进行加密...原创 2019-10-08 21:16:12 · 170 阅读 · 0 评论 -
图床
Gallery因为总有一些网站不支持图片上传功能,必须要使用图片链接,在我学习了数据库和网络的相关知识后,我决定向大家提供一个简易的图床整体架构核心就是一个 HTTP 服务器,提供对图片的增删改查功能 同时搭配简单的页面辅助完成图片上传功能使用 Json 作为数据交互格式数据库模块将相关数据库操作封装起来 表的相关结构create table image_t...原创 2019-08-30 15:08:10 · 757 阅读 · 0 评论 -
select、poll、epoll的优缺点及底层实现
select模型select优点select缺点poll模型poll优点poll缺点epoll模型epoll优点epoll缺点首先我们要知道,这三种都是IO多路转接模型什么叫IO多路转接所谓IO多路转接模型,就是指对大量描述符进行监控,大量描述符中有我们所关心的描述符就绪了,则调用返回,并且告诉哪些进程就绪了select模型int sel...原创 2019-08-20 16:17:04 · 1117 阅读 · 0 评论 -
浏览器中输入URL之后,发生了什么
整体大概流程域名解析->发起TCP的三次握手->建立TCP连接后发起http请求->服务器响应http请求,浏览器得到html代码->浏览器解析html代码,并请求html代码中的资源->浏览器对页面进行渲染呈现给用户首先,你在浏览器里输入一个地址之后1.解析URL 首先浏览器会检测这个url是否正确存在,如果不合法,将会返回一个默认的搜...原创 2019-08-20 15:21:42 · 280 阅读 · 0 评论 -
TCP/IP四层模型和OSI七层模型的概念
TCP/IP四层模型TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。 TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SM...原创 2019-08-19 09:27:46 · 1188 阅读 · 0 评论 -
主机字节序和网络字节序的相互转换
什么叫做字节序CPU在内存中对数据进行存储的顺序对于大于一个字节的类型:long、double、float、int、short的存储主机字节序主机字节序分为大端字节序和小端字节序大端字节序:低地址存高位小端字节序:低地址存地位这样做在没有进行网络通信时各有各的好处,但是在进行网络通信时,就会造成数据二义性问题如何查看自己的主机是大端字节序还是小端字节序很简单...原创 2019-08-19 10:13:14 · 614 阅读 · 0 评论 -
网络编程套接字
socket常用API// 创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器)int socket(int domain, int type, int protocol);// 绑定端口号 (TCP/UDP, 服务器) int bind(int socket, const struct sockaddr *address, socklen_t addre...原创 2019-08-19 19:09:30 · 103 阅读 · 0 评论 -
详解TCP三次握手和四次挥手
先画出整体流程图,以及每一步发生变化时所调用的socket API三次握手第一次握手:客户端发送位码为syn = 1,随机产生seq number = 10001的数据包到服务器,此时服务端由SYN = 1知道,客户端此时要求建立连接,此时客户端的状态为SYN_SENT第二次握手:服务端收到请求后要确认连接信息,向客户端发送ack number = (客户端的seq + 1),...原创 2019-08-19 21:08:06 · 191 阅读 · 0 评论 -
HTTP协议格式
URL平时我们所说的网址,就是URL,网址:http://www.baidu.com:80/s? 统一资源定位符 (URL)URL协议名://用户名:密码@服务器地址:端口/资源路径?查询字符串#片段标识符为什么' + ' 使用' 2b '表示?因为http协议中特殊字符一般都有特殊含义,不能随意使用,如果查询字符串中也有特殊字符,这样将造成http...原创 2019-08-19 21:45:54 · 193 阅读 · 0 评论 -
HTTP请求中GET和POST的区别
HTTP定义了与服务器不同的交互方法,其中最基本的五种:GET,POST,DELETE,HEAD,PUT其中GET和HEAD被成为安全方法,因为使用GET和HEAD请求不会产生什么动作,也就意味着这两个请求动作不会在服务器上产生任何结果,这个安全动作并不是指不会做任何动作,而是指不会修改信息它们的底层其实都是基于TCP完成的,只不过HTTP协议给他们贴上了不同的标签,但其实底层实现都是一样...原创 2019-08-20 08:47:37 · 100 阅读 · 0 评论 -
HTTP长连接,短链接,持久连接的区别
什么是Http长连接长连接定义:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于P2P点对点的通信。长连接的操作步骤是:建立连接——数据传输...(保持连接)...数据传输——关闭连接长连接适用场景:监控系统:后台硬件热插拔、LED、温度、电压发生变化;即时通信系统:其它用户登录、发送信息;即时报价...转载 2019-08-20 09:05:01 · 2166 阅读 · 0 评论 -
服务器出现了大量TIME_WAIT状态而引起bind失败的解决方法
原因首先,我们要知道一件事,每件事情的产生都有其原因,我们要从它的原因入手,因为是服务端出现了TIME_WAIT状态,这个状态只会出现在主动关闭连接的一方,说明服务器清理了大批不活跃用户,想想如果不清理的话,它们一直占用着资源,对服务器的负担是相当大的,短时间内服务器有大量请求,同时也会清理一大批不活跃用户,所以才会出现大量的TIME_WAIT状态,而在TIME_WAIT状态时地址和端口还是...原创 2019-08-20 10:06:27 · 764 阅读 · 0 评论 -
TCP与UDP小结,附带面试题
TCP小结 为什么TCP这么复杂? 因为要保证可靠性, 同时又尽可能的提高性能.可靠性:校验和在TCP头部有一个16位的校验和,通过这个校验和来验证数据是否完整序列号(按序到达)数据按照分包范围,但是从第一个包到最后一个包的序列号是连续的,seq 1 ~ 1000确认应答当对端收到数据包后,会回复确认收到的包,ack = seq + 1超时重发...原创 2019-08-20 11:05:44 · 508 阅读 · 0 评论 -
CloudBackUp
项目介绍该项目可以完成对一个指定目录下的文件进行监控,并将数据上传到云服务器上进行备份和下载功能。1. 客户端对指定目录进行监控,对每个文件生成etag信息,鉴别是否需要备份 2. 客户端将需要备份的文件基于http协议的PUT请求上传到服务器端 3. 服务端对于PUT上传的文件进行备份到指定目录下 4.服务端对于热度较低的文件进行压缩存储,并在文件被请求时进行解压缩处理5...原创 2019-08-08 18:24:40 · 406 阅读 · 0 评论