• 当输入一个 URL,实际会发生什么?

    从一个经典的面试题说起从输入URL到页面展现的过程输入URL后,会先进行域名解析。浏览器拿到服务器的IP地址后,会向它发送HTTP请求。分层一个HTTP请求从源端发出到在终端接收的处理过程都是要经过以下四层。报文结构HTTP报文的结构分为请求和响应两种,请求报文封装用户操作产生的动作,告知服务器应采取什么行为,响应报文来告知客户端请求的结果。
  • 记一次Redis连接池问题引发的RST

    通过 tcpdump 我们可以简单抓取一下 RST 包:shell>tcpdump-nn'tcp[tcpflags]&!=0'不过更好的方法是通过 tcpdump 多抓一些流量然后用 wireshark 来分析:如图所示,描述了一个 web 服务器和一个 redis 服务器的交互过程,有两个问题:在我的场景里,使用了 lua-resty-redis[1] 连接池,为什么还会发送 FIN 来关闭连接?因为项目代码比较多,我一时确定不了 lua-resty-redis 连接池的问题在哪,所以我打算先搞定为什么 web 服务器收到 FIN 后还会发送 RST 补刀的问题。通过查看源代码[2],可以大致判断出 RST 是 tcp_send_active_reset 或者 tcp_v4_send_reset 发送的。/usr/bin/envstapprobekernel.function{printf}probekernel.function{printf}通过对照两个窗口显示内容的时间点,最终确认 RST 是 tcp_v4_send_reset 发送的。接下来确认一下 tcp_v4_send_reset 是谁调用的:#!
  • TCP的三次握手与四次挥手理解及面试题(很全面)

    SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。四次挥手过程理解image1)客户端进程发出连接释放报文,并且停止发送数据。TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。注意此时TCP连接还没有释放,必须经过2MSL的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。常见面试题为什么连接的时候是三次握手,关闭的时候却是四次握手?在Client发送出最后的ACK回复,但该ACK可能丢失。现在把三次握手改成仅需要两次握手,死锁是可能发生的。
  • 笔记 | 网络编程基础:TCP如何保证可靠性

    从前面《笔记 | 面试官问我:TCP与UDP的区别》我们知道,TCP和UDP的不同之一是TCP可以保证数据传输的可靠性,但是你知道为什么TCP可以保证可靠性,需要依靠什么机制来保证其可靠性呢?其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。
  • 在短时间内收到太多send()消息后程序崩溃

    我的目标是使用C语言中的TCP套接字编写客户端-服务器体系结构。我已经成功地设法在客户端和服务器之间建立了连接,并以两种方式发送和接收消息。收到消息后,其他线程正在处理该消息。 (它将排队进入队列,并且另一个线程在该队列上工作)。 I'm now stress-testing my implementation, by send()ing a lot of messages from the client to the server. 因此,它的本质作用是: My client goes in a for...
  • 炸裂!万字长文拿下HTTP 我在鹅厂等你!(另 附高频面试题)

    HTTP可谓无处不在,这里例举出几个。为此,提出了持久连接,也就是一次TCP连接可以具有多个HTTP请求。那么HTTP中,同样的道理,如果文件太大,就大文件切分为小文件块发送。在HTTP1.1中,虽然大家共用了一条TCP通道,但是第一个请求没有结束,第二请求就可能阻塞等待,也就是说不能同时发送接收数据。具备像HTTP/2一样的应用数据二进制分帧传输。进一步解决线头阻塞问题。基于TCP的协议,会因为网络的切换导致IP地址的改变。
  • 如何read()放置32位整数缓冲区?

    我有以下程序(几乎是GNU的示例),该程序打开TCP,套接字等待连接,然后逐字节打印接收到的数据。或者我以为... #include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #defin...
  • 如何通过TCP接收多个文件并在C ++中同时保存它们?

    我正在尝试创建一个应用程序,该应用程序可以同时接受来自客户端的许多连接,并且对我有用,但是它也应该同时下载这些文件。在此版本的服务器中,即使客户端同时连接,文件也会被一一写入。 #include <stdio.h> #include <iostream> #include <sstream> #include <algorithm> #include <ctime> #pragma comment(lib, "ws2_32.lib") int main() { WSADATA wsaData; ...
  • 通过Python中的IP地址和端口进行TCP连接

    We're trying to establish a TCP connection in Python 3.8, where we want each machine to become a client and a server at the same time, so that each machine can send and receive messages. With this code, we can send and receive data (sometimes), but we have...
  • 为什么我无法从tcp服务器获得响应?

    我有(基于ESP32的)设备,该设备实现了TCP服务器。我可以向其发送JSON格式的消息,以更改其中的某些控件。 我希望能够通过我的Android手机控制此设备。我为此编写了一个应用程序,但有一个问题-我的Android应用程序未从ESP32设备获得任何响应。我用Python编写了用于测试简单脚本的脚本。第一个是客户端,它向ESP32发送消息。第二个实现了tcp服务器,因此我可以将我的Android应用程序连接到它,并检查响应是否到达。两种测试都可以正常工作。 我的Android代码有什么问题吗?我不确定这...
  • 我的服务器中的分段错误(valgrind日志)

    朋友们!我已经驾驶了3个多星期了。请提供建议。我非常求你!我是C ++的新手。 需要创建一个服务器,该服务器必须存储各种信号的整数值。客户端可以连接到该服务器并接收该数据。 客户端和服务器之间的数据传输根据工业协议IEC-60870-5-104 TCP / IP进行。 I used a ready-made library that implements this IEC-104 protocol in C and created a C ++ program. (GIT link) 我编写了一个测试程序(...
  • 从原始tcp数据包流中提取http / ws / TLS标头(更具体地说是url)

    基本上我想复制mitmproxy的透明模式,但是要使用c / c ++语言。 我以root身份启动代理并设置了侦听套接字,使用iptables / ip6tables确保客户端计算机上的所有流量都重定向到代理。我使客户端信任代理的CA证书,以便代理可以分配虚拟证书并解密SSL / TLS加密的流量。 (假设客户端仅发送http / ws / https / wss,否则我们将断开连接) iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner root ...
  • 100 个网络基础知识普及,看完成半个网络高手!

    点击上方“码农沉思录”,选择“设为星标”优质文章,及时送达100 个网络基础知识普及,看完成半个网络高手!骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。12)描述网络拓扑网络拓扑是指计算机网络的布局。网络层负责数据路由,分组交换和网络拥塞控制。RIP,路由信息协议的简称由路由器用于将数据从一个网络发送到另一个网络。所有这些组合将构成一个高度安全的网络。代理服务器主要防止外部用户识别内部网络的 IP 地址。T 表示双绞线,这是用于该网络的电缆。MAC 地址由 6 个字节组成。如果从 110 开始,那么它是 C 类网络。
  • 是什么会导致非阻塞套接字在`recv`上阻塞?

    我有一个TCP / IP套接字设置为非阻塞,无论如何还是阻塞。该套接字仅在一个线程中引用。此代码在Windows(有一些呼叫替换)上有效,但在Linux上无效。我有看起来像这样的代码(不要介意C风格的强制转换-这是很久以前编写的。此外,我对其进行了一些修整,所以请告知是否意外修整了一步。 '实际上是在执行该步骤。实际代码在另一台计算机上,所以我无法复制粘贴。): // In the real code, these are class members. I'm not bonkers int mSocket...
公告

欢迎访问 goshare  点击这里设置您的邮箱  可以接收站内跟帖、回复邮件提醒,不错过任何一条消息。

关注公众号订阅更多技术干货! 码农俱乐部