计网
DaysAway
为秃头而奋斗
展开
-
连的IP 地址存在,但端口号不存在的主机的握手过程是怎么样的?
前面已经提到的过IP地址压根就不存在的情况。想知道的同学可以回到我上一节的内容查看。假如IP地址存在但端口号是瞎编的呢?它的握手过程会是怎么样的呢?现象也比较简单,IP地址是存在的,也就是在互联网中这个机器是存在的。那么我们可以正常发消息到目的IP,因为对应的MAC地址和IP都是正确的,所以,数据从数据链路层到网络层都很OK。直到传输层,TCP协议在识别到这个端口号对应的进程根本不存在时,就会把数据丢弃,响应一个RST消息给发送端。此图来源于网络,不可用于商业RST字段在前几节有所涉及,这里原创 2022-01-12 15:00:00 · 935 阅读 · 0 评论 -
连接一个不存在的IP的主机时,握手是怎么样的?
我们先来看看正常的握手过程:服务器端启动之后调用LISTEN方法后回进入LISTEN状态,等待连接,客户端调用connect(IP地址)方法发起连接,向IP地址发起第一次握手,发送SYN到目的服务器。服务器在收到第一次握手之后,就会响应发出SYN,ACK,这是第二次握手。客户端在收到服务器发送的SYN时,也会响应发送一个ACK,至此三次握手结束,客户端和服务器都进入ESTABLISHED状态。以上为TCP的三次握手的抓包过程。那么,当我们连接一个IP地址不存在的主机时的握手是什么样呢?首先我原创 2022-01-12 09:00:00 · 533 阅读 · 0 评论 -
HTTP补充内容
众所周知,服务器与客户端想要进行数据传输就需要双方建立通信连接,常见的就是TCP连接,也就是三次握手,但是,当我们打开浏览器页面时,查看资源可以发现,会有很多资源状态码(200),那是不是每一个资源都要进行一次TCP连接呢?如上图所示,每一次返回成功状态码都表示一次资源请求的成功,按理说,每一个资源的请求都得有一次请求连接,但是,是否是每一个资源的请求都会有三次握手呢?答案当然是不会的!这么多资源,得进行多少次三次握手啊,想想就很耗时,所以自然是不会的,那么这么多资源到底是怎么样传输的呢?接下来给大家解原创 2022-01-11 08:00:00 · 165 阅读 · 0 评论 -
TCP报文
首先我们来看一看TCP报文格式:端口号:用来标识同一台计算机的不同的应用程序。1,源端口:源端口和IP地址的作用是标识报文的返回地址。2,目的端口:端口指明接收方计算机上的应用程序接口。TCP报头中的源端口号和目的端口号同IP数据报中的源IP和目的IP唯一确定一条TCP连接。URG:当URG=1时表示报文中有紧急数据需要发送,通常配合紧急指针使用ACK:与确认号关联,当ACK=1时,才可以读取确认号,为0时则无法读取确认号,就认为建立连接失败,所以ACK是用来确认连接的,一旦三次握手成功,则所原创 2022-01-09 07:00:00 · 1326 阅读 · 0 评论 -
HTTP请求之POST和GET
相信对于HTTP大家也是耳闻熟详了,对于它的TCP连接也是老八股了,相信什么三次握手和四次挥手也是老生常谈的东西了,这些不是今天文章的主要内容,所以在这里就不细说了,接下来就进入主题吧!每次当大家在输入栏中输入URL地址后就会呈现出界面,有没有想过他是通过什么方法来得到?在HTTP中请求方法有两种:POST和GET直接在地址栏里输入的请求是GET请求,而POST是将资源请求放在表单进行操作的,GET请求的资源可以放在URL的参数中,POST将资源的请求放在body里,这样的做的好处是相比较GET来说安原创 2022-01-08 06:00:00 · 1451 阅读 · 0 评论 -
深入理解TCP
TCP第三次握手携带数据第一次和第二次是不可以携带数据的,但是第三次是可以携带数据的。加入第一次握手可以携带数据的话,那对于服务器来说太危险了,如果有人恶意攻击服务器的话,每次都在第一次握手中的SYN报文中放入大量的数据,并且不断的重发SYN报文,服务器就会花费很多时间和内存空间去接收这些报文。第三次握手,此时客户端已经处于ESTABLISHED状态。对于客户端来说,已经建立了连接,并且已经知道服务器的接收和发送能力是正常的,所以也就可以携带数据了。服务器不调用accept即使服务端不调用acce原创 2022-01-04 14:00:00 · 821 阅读 · 0 评论 -
初识session和cookie
session和cookie的区别:1,cookie数据存放在客户端的浏览器上,session数据放在服务器上。2,cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应该使用session3,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie4,单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。cookie和session的联系sess原创 2022-01-04 08:00:00 · 840 阅读 · 0 评论 -
滑动窗口的死锁问题
滑动窗口所谓的流量控制就是让发送方的发送速率不要过快,让接收方有足够时间接收数据。利用TCO报文段中的窗口大小字段来控制发送发的发送窗口不大于接收方发回的窗口大小就可以实施流量控制。考虑一种特殊的情况,就是接收方若没有足够的缓存使用,就会发送零窗口大小的报文,此时发送方将发送窗口设置为0,停止发送数据。之后接收方有足够的缓存,发送了非零的窗口大小的报文,但是这个报文在中途丢失,那么发送方的发送窗口就一直是零导致死锁。如何解决这个问题?解决这个问题,TCO为每一个连接设置一个持续计数器(persisit原创 2022-01-03 07:30:00 · 1018 阅读 · 0 评论 -
浅谈HTTPS协议的加密过程
https包括对称加密和非对称加密两个阶段,在客户端和服务端建立连接的时候使用非对称加密,连接建立以后使用的是对称加密。注:SSL是传输层协议加密过程:1,客户端使用https的URL访问Web服务器,要求与 Web服务器建立SSL连接。2,Web服务器收到客户端请求后,会将网站的公钥传送一份给客户端,私钥自己保存。3,客户端的浏览器根据双方同意的安全等级,生成对称加密使用的密钥,称为会话密钥(也可以看做是客户端的公钥),然后利用网站的公钥将会话密钥进行加密,并传送给网站。4,Web服务器利用原创 2022-01-02 08:00:00 · 1343 阅读 · 0 评论 -
HTTP与HTTPS协议
HTTP和HTTPS也是老生常谈了,想必大家也对这一对兄弟是熟悉有加了,在这里我简单的介绍下两者的区别。1,HTTP协议是以明文方式在网络中传输数据的,而HTTPS协议传输的数据则是经过SSL/TLS加密后的,HTTPS更具有安全性,但是因为HTTPS的安全也是需要代价的,那就是他在传输数据之前需要先进行加密处理,所以在速度上面会比HTTP要慢一些,但是相对于数据的安全性,我想这个代价是可以承受的,毕竟,谁都不想自己的账户信息被窃吧。2,HTTPS在三次握手之后会有SSL的handshake,协商加密使原创 2022-01-02 00:29:21 · 686 阅读 · 0 评论 -
POST和GET请求
GET和POST的区别:1,GET在浏览器回退时是无害的,而POST会再次提交请求。2,GET产生的URL地址可以被Bookmark,而POST不可以。3,GET请求可以被浏览器主动cache,而POST不会,除非手动设置。4,GET请求只能进行URL编码,而POST支持多种编码方式。5,GET请求在URL中传送的参数是有长度限制的,而POST没有。6,对参数的数据类型,GET只接受ASCLL字符,而POST没有限制。7,GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏原创 2022-01-01 06:30:00 · 194 阅读 · 0 评论 -
HTTP报文的特点
HTTP协议的主要特点可概括如下:1,支持C/S模式2,简单快速:客户端向服务器请求服务时,只需要传送请求方法和路径。请求方法常用的有GET,HEAD,POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议的简单,使得HTTP服务器的程序规模小,因而通信速度很快。3,灵活性:HTTP允许传输任意类型的数据对象。正在传输的类型有Content-Type加以标记。4,无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节原创 2022-01-01 00:25:00 · 625 阅读 · 0 评论 -
浅谈IP协议的作用和特点
网络层最核心的协议就是IP协议。IP协议根据数据包的目的IP地址来决定如何传输。如果数据包不能直接发送到目标主机,那么IP协议就会为它寻找下一个合适的路由器,并将数据包交付给该路由器来转发。多次重复这一过程,数据包最终到达目标主机,或由于发送失败而被丢弃。所以,IP协议使用跳转的方式确定通信路径。IP协议的特点:无连接,不可靠,无状态1,无连接是指:IP通信的双方都不长久地维持对方的任何信息。这样的话,上层协议每次发送数据的时候,都必须明确地指定对方的IP地址。2,不可靠是指:IP协议不保证数据报能够原创 2021-12-30 18:30:00 · 6503 阅读 · 0 评论 -
ISO模型
1,DNS协议,HTTP协议,HTTPS属于应用层应用层是体系结构中的最高层。应用层确定进程之间通信的性质以满足用户的需要。这里的进程就是指正在运行的程序。应用层不仅要提供应用进程所需要的信息交换和远地操作,而且要作为互相作用的应用进程的用户代理,来完成一些为进行语义上有意义的信息交换所必须的功能。应用层直接为用户的应用进程提供服务。2,TCP/UDP传输层传输层的任务就是负责主机中两个进程之间的通信。因特网的传输层可使用两种不同协议:即面向连接的传输控制协议TCP,和无连接的用户数据报协议UDP。面原创 2021-12-30 15:30:00 · 343 阅读 · 0 评论 -
浏览器输入一个URL的详细过程
在浏览器输入URL浏览器要将URL解析为IP地址,解析域名就要用到DNS协议,首先主机会查询DNS的缓存,如果没有就给本地的DNS发送查询请求。DNS查询分为两种方式,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS服务器,向根域名服务器发送查询请求,根域名服务器告知该域名的一级域名服务器,然后本地服务器给该一级域名服务器发送查询请求,然后依次类推直到查询到该域名的IP地址。DNS服务器是基于UDP协议的。得到IP地址后,浏览器就要与服务器建立一个http连接。因此要用到http协议。htt原创 2021-12-30 10:31:25 · 1580 阅读 · 0 评论 -
UDP如何实现可靠传输
因为UDP是无连接的不稳定的协议,所以在传输层上无法保证可靠传输,要想实现可靠数据传输,只能从应用层实现,需要实现TCP的seq/ack机制,重传机制和窗口拥塞控制机制。在接收方收到UDP之后回复个确认包,发送发有个机制,收不到确认包就要重新发送,每个包有递增的序号,接收方发现中间丢包了就要发重传请求,当网络太差导致频繁丢包,为了防止丢包越严重越重传的恶性循环,需要有和TCP一样的窗口拥塞控制机制,发送窗口的大小要根据网络的传输情况来决定,调整算法应该有一定的自适应性。总结:1,添加seq/ack机制,原创 2021-12-30 00:30:39 · 1279 阅读 · 0 评论 -
TCP的粘包问题
粘包问题的最本质的原因在于接收对等方无法分辨消息与消息之间的边界在哪。我们可以通过使用某种方案给出边界,例如:1,发送定长包,如果每个消息的大小都是一样的,那么在接收对等方只要累计接收数据,直到数据等于一个定长的数值就将它作为一个消息。2,包头加上包体长度。包头是定长的4个字节,说明了包体的长度,接收对等方先接收包体长度,依据包体长度来接收包体。3,可以使用更复杂的应用层协议。...原创 2021-12-30 00:17:17 · 236 阅读 · 0 评论 -
UDP的优缺点
UDP的优点:一般把UDP和TCP进行想比较,因为UDP没有TCP的确认机制,重传机制,拥塞控制,所以相对于TCP,UDP的速度快于TCP并且安全,但这同时也是UDP的一个缺点,这个我们后面说,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的各种机制,UDP相较TCP被攻击者利用的漏洞也要少一些。但是UDP也有无法避免的攻击,比如:UDP flood攻击。UDP缺点:上面我们说到,UDP没有TCP的各种机制,这会使得UDP不可靠,不稳定,在数据传输的时候,如果网络质量不好的话,就会容易原创 2021-12-28 18:53:21 · 5389 阅读 · 0 评论 -
TCP的优缺点
TCP的缺点:慢,效率低,占用系统资源高,容易被攻击,TCP在传输数据之前需要建立连接,这会消耗时间,而且在传输数据的时候,它的一些机制,比如重传机制,确认机制,拥塞控制机制都会消耗大量的时间,并且需要在每台设备上都要维护到所有的连接,每一个连接都会占用CPU资源,内存等硬件资源。TCP的确认机制也导致其在建立连接的过程中受到攻击,最常见的攻击就是DDOS,DOS攻击等。但是它的个别缺点同时又是TCP的优点(真是爱恨交织)TCP的优点:因为他的确认机制和重传机制的存在,所以TCP是可靠的,稳定的,并且在原创 2021-12-28 18:38:01 · 5287 阅读 · 0 评论