首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)

因为 UDP发送数据以后,没有采用超时重发,停止等待机制,拥塞控制 三:TCP 面向流,UDP 面向报文 TCP优缺点: 优点:可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接...,而且在数据传递,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。...三次握手与四次挥手 三次握手 第一次握手:第一次连接客户端向服务发送SYN(syn=j),等待服务端的确认,此时客户端进入SYN_SEND状态,SYN:同步序列号 第二次握手:服务端收到客户端发来的...SYN 同步序列号,TCP建立连接将这个位置1 FIN 发送端完成发送任务位,TCP完成数据传输需要断开,提出断开连接的一方将这位置1 ---- Http 与 https Http 是在应用层上的传输协议...洪水攻击 向服务发送大量的伪TCP连接请求,这时候服务端会进入syn_receive半连接状态,服务端会尝试发送多次包来确认,因为这些连接假冒的,所以并不会完成第三次握手,导致服务端保持大量的半连接状态

1.1K20

IP、UDP和TCP的关系

如果要想把一个数据包从主机 A 发送给主机 B,那么在传输之前,数据包上会被附加上主机 B 的 IP 地址信息,这样在传输过程中才能正确寻址。...一个TCP连接的生命周期 从下图可以看出,一个完整的 TCP 连接的生命周期包括了建立连接、传输数据、关闭连接三个阶段。 首先,建立连接阶段。这个阶段是通过“三次握手”来建立客户端和服务之间的连接。...TCP 提供面向连接的通信传输。面向连接是指在数据通信开始之前先做好两端之间的准备工作。所谓三次握手,是指在建立一个 TCP 连接客户端和服务总共要发送三个数据包以确认连接的建立。...所以发送发送了一个数据包之后,在规定时间内没有接收到接收端反馈的确认消息,则判断为数据包丢失,并触发发送端的重发机制。...最后,断开连接阶段。数据传输完毕之后,就要终止连接了,涉及到最后一个阶段“四次挥手”来保证双方都能断开连接

1.8K30
您找到你想要的搜索结果了吗?
是的
没有找到

Socket 编程原理

两台主机要建立 TCP 连接客户端要向服务端发送 SYN 包发起连接请求,服务端收到 SYN 包后获取到客户端地址然后响应一个 SYN+ACK 包进行确认,表示接受连接客户端收到这个确认包后也会返回一个用于确认的...,服务端每接收一次数据包就会响应一个 ACK 确认,反过来也一样; 在断开连接的时候则要经过四次挥手,断开连接的发起方可以是客户端也可以是服务端,其中一方发送 FIN+ACK 包告诉另一端数据传输完毕...,发送端等待 2msl 后若没收到接收端新的信息也会断开连接。...权威域名服务 负责一个区的域名解析工作 本地域名服务 主机发起DNS查询请求第一个查询的对象,一般为主机hosts文件/本地DNS服务 其他 DNS 服务返回查询结果,该 DNS 服务会把结果记录在本地缓存中...如果 DNS 服务本地没有存储查询 DNS 信息,那么该服务会询问其他服务,并将返回的查询结果提交给客户机; 2.迭代查询:客户机发送查询请求,DNS 服务并不直接回复查询结果,而是告诉客户机另一台

42960

计算机网络基本知识汇总「建议收藏」

、OPTIONS、TRACE、CONNECT; GET:客户端要从服务中读取某个资源,使用GET 方法。...GET 方法要求服务将URL 定位的资源放在响应报文的部分,回送给客户端,即向服务请求某个资源。使用GET 方法,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)...全双工通信(TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据)。 面向字节流。 TCP与UDP发送报文所采用的方式完全不同。...=1表示紧急指针有效 确认ACK 推送PSH 复位RST RST = 1,释放连接并重新建立连接 同步SYN SYN = 1 ACK = 0,表明这是一个连接请求报文段。...服务端在发送完数据后,发送连接释放报文FIN = 1, seq = w, ack = u + 1;并停止客户端发送数据。 4.

58320

网络、Http与Https

TCP的三次握手:是指建立一个TCP连接,需要客户端和服务总共发送3个包。...TCP窗口:TCP中,发送端的数据包到达接收端,接收端会返回一个带序号的ACK确认,数据包丢失或者ACK丢失或者延误时,发送端就会重新发送数据包。ACK延误时,会出现重复发送的状况。...每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多, 所以每个操作完后都不断开,下次次处理直接发送数据包就OK了,不用建立TCP连接。...短连接: 指通信双方有数据交互,就建立一个TCP连接,数据发送完成后,则断开此TCP连接;连接→数据传输→关闭连接; 三、HTTP 一次完整的HTTP请求 一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始...当下次客户端再往服务发送请求客户端会自动在请求报文中加入Cookie后发送出去。

40210

UDP与TCP协议的探究

简单来说,一台计算机向另外一台计算机发送数据发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据,也不会向发送端反馈是否收到数据。...2)第二次握手,接收端向发送端响应,通知发送端收到了连接请求。3)第三次握手,客户端再次向服务发送确认信息,确认连接。整个交互过程如下图所示。...,连接建立成功⑤过了一段时间后,客户端像服务端发送断开连接请求(进入四次挥手过程,暂时不讨论)⑥服务端与客户端断开连接后,突然收到之前客户端发送的超时请求,但服务端还以为是客户端发送连接请求,因此对该请求进行确认...u的确认【第三次挥手】服务端确认自身没有数据要发送客户端或者已经将数据全部发送完毕之后,开始发送连接释放报文给客户端,代表确认连接断开;FIN标记为1:表明本次是一个连接释放报文,服务端与客户端断开TCP...2.2.4 TCP总结使用TCP协议传输数据,必须要建立可靠连接(三次握手),连接关闭还需要四次挥手,对性能损耗较大,如果频繁的创建和关闭TCP连接性能势必会有很大影响。

8310

【编程者必会系列】:TCPIP之传输层

TCP四次断开     1)第一次断开:客户机打算关闭连接,就向其TCP发送一个连接释放报文段,并停止发送数据,主动关闭TCP连接,该报文段的FIN标志位被置1,seq=u,它等于前面已传送过的数据的最后一个字节的序号加...3)第三次断开:若服务已经没有要向客户机发送的数据,就通知TCP释放连接,此时其发出FIN=1的连接释放报文段(注意: 此时确认号字段值仍为u+1, 因为这段时间里, 客户端并未发送任何数据到服务)...发送窗口和接收窗口的大小都等于1,就是停止等待协议。...cwnd>ssthresh,停止使用慢开始算法而改用拥塞避免算法。         cwnd=ssthresh,既可使用慢开始算法,也可使用拥塞避免算法(通常做法)。...1.快重传     发送方连续收到三个重复的ACK报文,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时超时。

22020

《深入浅出Node.js》-网络编程

server.close() 会停止接受新的 socket,但是保存已有的连接,等待所有的连接断开后触发。 error:服务发生异常触发。...data:一端调用 write() 发送数据,另外一端触发 data 事件。 end:连接中的任一端发送 FIN 数据,触发该事件。...响应结束后,HTTP 服务可能将连接用于下一次请求,或者关闭连接。另外,无法服务在处理业务逻辑是否发生异常,务必在结束时调用 res.end() 结束请求,否则客户端将一直处于等待的状态。...close 事件:调用 server.close() 方法停止接受新的连接,并且已有连接全部断开触发。...(6) HTTP 客户端事件 response:客户端收到服务的响应时触发。 socket:底层连接池中简历的连接分配给当前请求对象触发该事件。

64220

计算机网络之传输层

=1 表示释放连接 TCP三次握手的过程: 第一次握手:建立连接客户端发送方)发送syn包(seq=j)到服务,并进入SYN_SENT状态,等待服务(接收方)确认; 第二次握手:服务收到syn...第三次握手:客户端收到服务的SYN+ACK包,向服务发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务进入ESTABLISHED(TCP连接成功)状态,完成三次握手   在客户端与服务端传输的...此后客户端和服务端进行正常的数据传输。这就是“三次握手”的过程。 为什么发送方要发出第三个确认报文呢?...为了避免已经失效的连接请求报文传送到对方,引起错误 TCP连接的释放 TCP四次挥手的过程:TCP连接断开过程:假设Client端发起中断连接请求,也就是发送FIN报文。...但关闭连接收到对方的FIN报文通知,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送

15510

TCPUDP协议(二)

三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。 ? 四次握手:断开Tcp连接,需要客户端和服务端总共发送4个包以确认连接断开。...通俗描述为: 客户端A和服务B四次握手: 客户端A: “B,我已经没有话说了,我不会再给你发消息了”; (等待B确认)(一次握手) 服务端B: “A,好的,我知道你不会给我发消息了”;(此时,A-...); 客户端A: “好,我知道了,挂了吧”;(收到确认后,B断开连接,A断开连接)。...Udp协议 特点: (1)UDP是无连接的:发送数据之前不需要建立连接发送结束后也没有连接释放,因此减少了开销和发送数据前的研; (2)UDP使用尽最大努力交付:即不保证可靠交互; (3)UDP是面向报文的...(4)UDP没有拥塞控制:网络出现拥塞并不会使源主机的发送速率降低; 很多实时应用如ip电话,实时视频会议等要求主机以恒定速率发送数据,并且允许在拥塞时有一些数据丢失,但不允许有太大的延,就可以用UDP

77730

28 张图,一次性说清楚 TCP

窗口内的数据接收到确认回复,整个窗口会往前移动,直到发送完成所有的数据。 在TCP的首部有一个窗口大小字段,他表示接收方的剩余缓冲区大小,让发送方可以调整自己的发送窗口大小。...拿现实的交通举例子: 高速公路同一间可通行的汽车数量是一定的,节假日,就会发生严重的堵车。...三次消息的发送,称为三次握手。 断开连接 断开连接和三次握手类似,直接上图: 1....机器A发送完数据之后,向机器B请求断开连接,自身进入FIN_WAIT_1状态,表示数据发送完成且已经发送FIN包(FIN标志位为1); 2....前面我们知道,当我们向一个主机发送syn包请求创建连接,服务会为我们创建缓冲区等,然后向我们返回syn+ack报文;如果我们伪造IP和端口,向一个服务进行海量的请求,会使得服务创建了大量的创建一半的

33010

一篇文章带你详解 TCPIP 协议

所谓三次握手是指建立一个 TCP 连接需要客户端和服务端总共发送三个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。 下面来看看三次握手的流程图: ?...3.2 四次挥手(重点) 四次挥手即终止TCP连接,就是指断开一个TCP连接,需要客户端和服务端总共发送4个包以确认连接断开。...四次挥手 中断连接端可以是客户端,也可以是服务端。 第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态。...第三次挥手:服务端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务端进入LAST_ACK状态。...服务端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。

64410

计算机网络

为什么UDP不可靠 UDP面向数据报无连接的,数据报发出去,就不保留数据备份了。 仅仅在IP数据报头部加入校验和复用。 UDP没有服务客户端的概念。...cwnd ssthresh 停止使用慢开始算法而改用拥塞避免算法。...因为可能客户端发送多个请求连接的请求,服务端发送SYN=1 ACK=1 给客户端之后,再收到客户端发送过来的请求就放在半连接队列中。...所以服务端会先将 ACK 发过去告诉客户端我收到你的断开请求了,但请再给我一点间,这段时间用来发送剩下的数据报文,发完之后再将 FIN 包发给客户端表示现在可以断了。...之后客户端需要收到 FIN 包后发送 ACK 确认断开信息给服务端。 为什么四次挥手释放连接需要等待2MSL MSL即报文最大生存时间。

45940

28 张图,搞懂TCP

基本模型如下: 发送方需要根据接收方的缓冲区大小,设置自己的可发送窗口大小,处于窗口内的数据表示可发送,之外的数据不可发送窗口内的数据接收到确认回复,整个窗口会往前移动,直到发送完成所有的数据...拿现实的交通举例子: 高速公路同一间可通行的汽车数量是一定的,节假日,就会发生严重的堵车。...这个时候TCP无法区分这些数据是否来自不同的发送方,就会导致出现错误。 既然是连接,就有两个关键要点:建立连接断开连接。 建立连接 建立连接的目的就是交换彼此的信息,然后记住对方的信息。...断开连接 断开连接和三次握手类似,直接上图: 1、机器A发送完数据之后,向机器B请求断开连接,自身进入FIN_WAIT_1状态,表示数据发送完成且已经发送FIN包(FIN标志位为1); 2、机器B收到FIN...前面我们知道,当我们向一个主机发送syn包请求创建连接,服务会为我们创建缓冲区等,然后向我们返回syn+ack报文;如果我们伪造IP和端口,向一个服务进行海量的请求,会使得服务创建了大量的创建一半的

28510

这篇TCP神总结,请务必收下!

这种“一来一去”的方法来保证传输可靠就是停止等待协议(stop-and-wait)。不知道还记不记得前面TCP首部有一个ack字段,他设置为1的时候,表示这个报文是一个确认收到报文。...窗口内的数据接收到确认回复,整个窗口会往前移动,直到发送完成所有的数据 在TCP的首部有一个窗口大小字段,他表示接收方的剩余缓冲区大小,让发送方可以调整自己的发送窗口大小。...拿现实的交通举例子: 高速公路同一间可通行的汽车数量是一定的,节假日,就会发生严重的堵车。...三次消息的发送,称为三次握手。 断开连接 断开连接和三次握手类似,直接上图: ? 1....前面我们知道,当我们向一个主机发送syn包请求创建连接,服务会为我们创建缓冲区等,然后向我们返回syn+ack报文;如果我们伪造IP和端口,向一个服务进行海量的请求,会使得服务创建了大量的创建一半的

60820

【Java面试总结】计算机网络

断开一个 TCP 连接则需要“四次挥手”: 客户端-发送一个 FIN,用来关闭客户端到服务的数据传送 服务-收到这个 FIN,它发回一个 ACK,确认序号为收到的序号加1 。...和 SYN 一样,一个FIN 将占用一个序号 服务-关闭与客户端连接发送一个FIN给客户端 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1 为什么要四次挥手?...由于 TCP 要提供可靠的、面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源...(TCP 利用滑动窗口实现流量控制) 拥塞控制:网络拥塞,减少数据的发送; ARQ 协议:也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组...使用长连接的HTTP协议,会在响应头加入这行代码: Connection:keep-alive 在使用⻓连接的情况下,一个网⻚打开完成后,客户端和服务之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务

78820

TCPIP超详细总结

此外,通信传输结束后,有必要将连接断开。 如上,进行建立连接断开连接的处理”,在两个主机之间创建逻辑上的通信连接即是传输层的主要作用。...客户端或服务均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。四次挥手后客户端和服务端之间断开连接 ?...服务接收到客户端的FIN,向客户端发送一个ACK,其中ack的值等于FIN+SEQ 然后服务客户端发送一个FIN,告诉客户端应用程序关闭。...客户端收到服务端的FIN是,回复一个ACK给服务端。其中ack的值等于FIN+SEQ 为什么建立连接需要三次,但是断开连接却需要四次呢? 确保数据能够完整传输。...5、超时重发: 客户端给服务发送请求,如果服务端由于网络等原因没有及时给客户端响应,那么这时客户端便会重新发送一个请求,这就是超时重发。

97610

什么是TCP?看这些图你就知道了

窗口内的数据接收到确认回复,整个窗口会往前移动,直到发送完成所有的数据 在TCP的首部有一个窗口大小字段,他表示接收方的剩余缓冲区大小,让发送方可以调整自己的发送窗口大小。...拿现实的交通举例子: 高速公路同一间可通行的汽车数量是一定的,节假日,就会发生严重的堵车。...断开连接 断开连接和三次握手类似,直接上图: 1.机器A发送完数据之后,向机器B请求断开连接,自身进入FIN_WAIT_1状态,表示数据发送完成且已经发送FIN包(FIN标志位为1); 2.机器B收到FIN...4次互相发送报文来断开连接的过程,就是四次挥手。...前面我们知道,当我们向一个主机发送syn包请求创建连接,服务会为我们创建缓冲区等,然后向我们返回syn+ack报文;如果我们伪造IP和端口,向一个服务进行海量的请求,会使得服务创建了大量的创建一半的

647101

28 张图,一次性说清楚 TCP协议

窗口内的数据接收到确认回复,整个窗口会往前移动,直到发送完成所有的数据 在TCP的首部有一个窗口大小字段,他表示接收方的剩余缓冲区大小,让发送方可以调整自己的发送窗口大小。...拿现实的交通举例子: 高速公路同一间可通行的汽车数量是一定的,节假日,就会发生严重的堵车。...三次消息的发送,称为三次握手。 断开连接 断开连接和三次握手类似,直接上图: 1....机器A发送完数据之后,向机器B请求断开连接,自身进入FIN_WAIT_1状态,表示数据发送完成且已经发送FIN包(FIN标志位为1); 2....前面我们知道,当我们向一个主机发送syn包请求创建连接,服务会为我们创建缓冲区等,然后向我们返回syn+ack报文;如果我们伪造IP和端口,向一个服务进行海量的请求,会使得服务创建了大量的创建一半的

44530
领券