网络
文章平均质量分 92
张呱呱_
C/C++领域小白,努力中..
展开
-
Linux内核对连接的组织和全连接队列
理解tcp和udp在Linux内核中是如何组织的,文件描述符与套接字的关系,全连接队列的意义原创 2024-10-02 14:31:53 · 942 阅读 · 0 评论 -
[网络]抓包工具介绍 tcpdump
如果没有安装,可以使用包管理器 进行安装。注意:-i any 指定捕获所有网络接口上的数据包,tcp 指定捕获 TCP 协议的数据包。例如,要捕获端口号为 80 的 TCP 报文(通常是HTTP 请求),可以使用以下命令。pcap 后缀的文件通常与 PCAP(Packet Capture)文件格式相关,这是一 种用于捕获网络数据包的文件格式。这将把捕获到的 HTTP 流量保存到名为 data.pcap 的文件中。使用 -w 选项可以将捕获的数据包保存到文件中,以便后续分析。原创 2024-09-30 16:39:42 · 2172 阅读 · 0 评论 -
【网络】手动部署内网穿透(超详细教程)
注意8888端口号是用于frp服务端与客户端进行连接的,而8080端口号是在frp的连接建立好后推送给服务器的,目的是让其在新建一个套接字,使服务器的8080端口号与虚拟机中的22号端口号构建映射,这样当别的主机访问服务器的8080端口号,服务器就会把请求直接推送给虚拟机的22号端口号(因为要验证ssh,所以设置为了22)首先我们在服务器中打开解压好的文件,打开frps.toml配置文件,里面有一个端口号默认为7000,我们可以自行修改,这个端口号是给frpc客户端看的,用于建立frp之间的连接。原创 2024-09-29 20:55:53 · 316 阅读 · 0 评论 -
[网络]NAT、代理服务、内网穿透、内网打洞
NAT、NAPT、代理服务器、内网穿透、内网打洞原创 2024-09-29 11:21:46 · 1508 阅读 · 0 评论 -
[网络]数据链路层-MAC帧与ARP协议
当两台主机在进行跨网络通信时,发送方可以根据目的IP找到目的主机所在的子网路由器,但是仅仅知道目的主机的IP地址与端口号,不知道目的主机的硬件地址(MAC地址),由于数据帧的传输是在数据链路层进行的,因此必须知道目标设备的MAC地址才能正确发送数据。当主机收到MAC帧后,会根据MAC帧当中的目的地址来判断该MAC帧是否是发给自己的,如果是发送给自己的会对其进行CRC校验,如果校验成功则会根据该MAC帧的帧协议类型,将该MAC交付给对应的上层协议进行处理,如果不是发送给自己的则在数据链路层直接将数据丢弃。原创 2024-09-27 07:30:00 · 1899 阅读 · 0 评论 -
[网络] 网络层--IP协议
IP协议网络划分IP地址的数量限制私有IP地址与公网IP地址路由的过程原创 2024-09-25 07:00:00 · 868 阅读 · 0 评论 -
【网络】传输层协议TCP
为什么是四次挥手,不能向三次握手一样采用捎带应答,称为三次挥手吗?四次挥手主要是因为TCP是全双工通信协议,即数据可以在两个方向上同时传输。在断开连接时,需要确保两个方向上的数据传输都已经被正确处理和确认,以避免数据丢失或连接状态不一致的问题。当客户端数据发送完成申请断开连接时,服务器会无条件同意,但是不能采用捎带应答的方式向客户端发送FIN请求,因为此时服务端可能还有数据要发送给客户端,只有当服务器的数据全部发送完成时才会向客户端发送FIN请求断开连接。原创 2024-09-18 15:47:10 · 1101 阅读 · 4 评论 -
【网络】传输层协议UDP
UDP存在缓冲区的意义是他可以保存一些报文,除了上层正在处理的报文外,OS可能还会不断地从硬件读取报文,所以有的报文可能正在被处理,有的报文可能需要放到缓冲区中,并且有的报文需要向上交付,有的需要向下交付,总之OS内部可能同时存在许多的报文,那OS就需要管理这些报文,那如何管理呢?UDP的报头是固定长度的,分为四部分,每部分16位一共8个字节,数据报前8个字节就是报头,而数据报的总长度我们是知道的,剩下的就是有效载荷的长度。"源 IP", "源端口号", "目的 IP", "目的端口号", "协议号"原创 2024-09-13 16:33:17 · 1353 阅读 · 0 评论 -
[网络]HTTP协议 Cookie与Session
HTTP Cookie(也称为 Web Cookie、浏览器 Cookie 或简称 Cookie)是服务器发送到 用户浏览器并保存在浏览器上的一小块数据,它会在浏览器之后向同一服务器再次发 起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态、记录用户偏好等。HTTP Session 是服务器用来跟踪用户与服务器交互期间用户状态的机制。由于 HTTP 协议是无状态的(每个请求都是独立的),因此服务器需要通过 Session 来记住用户的信息。原创 2024-09-07 08:08:11 · 943 阅读 · 0 评论 -
网络基础知识
以太网中,任何时刻,只允许一台机器向网络中发送数据,如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞,没有交换机的情况下,一个以太网就是一个碰撞域,所有发送数据的主机要进行碰撞检测和碰撞避免,如果数据链路层的标准是以太网的话,当一个设备发送数据发生数据碰撞后,该设备就停止发送,让其他设备先发送,所以以太网的处理方式可以认为是一种乐观的处理机制,因为同一时间有两个设备同时发送数据的概率并不高。协议的本质也是一个软件,在设计上为了更好的进行模块化,解耦合,也是被设计成为层状结构的。除了报头,剩下的叫做。原创 2024-08-08 18:32:45 · 1034 阅读 · 0 评论 -
UDP网络套接字
其实并不是,在现实生活中,我们通过网络聊天是人与人在聊天,下载软件是人在下载,浏览网页是人在浏览,而我们聊天用的微信、下载用的应用商店、浏览用的浏览器在主机中是不同的进程,所以人在主机中的体现就是一个进程,网络通信的本质就是一个主机的进程将信息发送到另一个主机的进程,即。ps:可靠与不可靠不是两个协议的优缺点而是特点,UDP协议是不可靠的注定它的实现和使用是相对容易的,TCP协议虽然是可靠的但是也注定其实现和使用是相对麻烦的,故两个协议没有好坏之分,在不同的场景下两个协议各有各的优点。原创 2024-08-09 15:58:04 · 1354 阅读 · 0 评论 -
TCP网络套接字
这里还有一个小细节,子进程会继承父进程的文件描述符表,我们知道每一个客户端会对应一个sockfd,而文件描述符表本质就是一个数组,也是有数量大小的,当客户端的数量比较多了的话文件描述符表可能就会被占满,其次父进程不关心业务执行什么,也就是父进程不关心sockfd,所以每当创建一个子进程建议父进程将sockfd关掉,也建议子进程将listenfd也关掉方式误操作,这样不论有多少个客户端,其对应的文件描述符永远是4。这样,当套接字进行通信时,就可以使用这个指定的地址作为通信的源地址。原创 2024-08-09 18:17:14 · 1378 阅读 · 4 评论 -
网络版计算器(理解协议与序列化与反序列化)
Jsoncpp 是一个用于处理 JSON 数据的 C++ 库。它提供了将 JSON 数据序列化为字 符串以及从字符串反序列化为 C++ 数据结构的功能。Jsoncpp 是开源的,广泛用于各 种需要处理 JSON 数据的 C++ 项目中。原创 2024-08-18 17:59:49 · 734 阅读 · 0 评论 -
应用层协议Http
在进行网络通信时,应用层协议一般都是程序员自己写的,但是有一些大佬其实已经定义出了一些现成的应用层协议,例如:HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、POP3(邮局协议版本3)、IMAP(Internet邮件访问协议)、DNS(域名系统)、SNMP(简单网络管理协议)、DHCP(动态主机配置协议)等等HTTP 协议是客户端与服务器之间通信的基础。它规定了客户端(通常是浏览器)和服务器之间交换数据(尤其是超文本)的格式和方式。原创 2024-09-04 10:33:02 · 1052 阅读 · 0 评论 -
HTTPS协议原理
HTTP协议是用于超文本传输的应用层协议,但是HTTP协议在数据传输时,内容都是文本式的明文传输,这就导致传输一些用户个人信息时可能会造成信息泄露。HTTPS协议就是在HTTP协议的基础上添加了一个加密层(TLS(传输层安全)和SSL(安全套接字层)),这个加密层也属于应用层,在进行数据传输时需要先将数据进过加密层进行加密,在发送给对方,对方接收到数据再进过加密层进行解密,就得到了对应的信息。数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash 函数)对信息进行运算, 生成一串固定长度的数字摘要。原创 2024-09-05 16:29:00 · 595 阅读 · 0 评论