计算机网络
文章平均质量分 92
morris131
这个作者很懒,什么都没留下…
展开
-
【计算机网络】Socket的OOBInline选项与UrgentData
虽然在客户端并不是使用OutputStream向服务器发送数据,但在服务端程序中这个单字节的数据是和其它的普通数据混在一起的。如果设置了OOBInline为true,那么带外数据将与普通数据混合在一起,可以通过相应的方式进行处理。在这种情况下,接收方会把接收到的紧急数据与普通数据放在同样的队列中,从而可以通过套接字输入流来接收这些紧急数据。TCP的紧急指针,一般都不建议使用,而且不同的TCP/IP实现,也不同,一般说如果你有紧急数据宁愿再建立一个新的TCP/IP连接发送数据,让对方紧急处理。原创 2024-02-27 15:19:35 · 1429 阅读 · 0 评论 -
【计算机网络】Socket的SO_TIMEOUT与连接超时时间
SO_TIMEOUT选项是Socket的一个选项,用于设置读取数据的超时时间。它指定了在读取数据时等待的最长时间,如果在指定的时间内没有数据可读取,将抛出SocketTimeoutException异常。原创 2024-02-04 10:00:26 · 5046 阅读 · 0 评论 -
【计算机网络】Socket的SO_REUSEADDR选项与TIME_WAIT
SO_REUSEADDR用于设置套接字的地址重用。当一个套接字关闭后,它的端口可能会在一段时间内处于TIME_WAIT状态,此时无法立即再次绑定相同的地址和端口。使用SO_REUSEADDR选项可以允许新的套接字立即绑定到相同的地址和端口,即使之前的套接字仍处于TIME_WAIT状态。原创 2024-02-01 09:49:14 · 14515 阅读 · 0 评论 -
【计算机网络】Socket的TCP_NODELAY选项与Nagle算法
TCP_NODELAY是一个套接字选项,用于控制TCP套接字的延迟行为。当TCP_NODELAY选项被启用时,即设置为true,就会禁用Nagle算法,从而实现TCP套接字的无延迟传输。这意味着每次发送数据时都会立即发送,不会等待缓冲区的填充或等待确认。原创 2024-01-19 09:44:36 · 20168 阅读 · 0 评论 -
【Docker】vxlan的原理与实验
VXLAN是在底层物理网络(underlay)之上使用隧道技术,借助UDP层构建的Overlay的逻辑网络,使逻辑网络与物理网络解耦,实现灵活的组网需求。它对原有的网络架构几乎没有影响,不需要对原网络做任何改动,即可架设一层新的网络。也正是因为这个特性,很多容器的网络才会选择VXLAN作为通信网络。VXLAN不仅支持一对一,也支持一对多,一个VXLAN设备能通过像网桥一样的学习方式学习到其他对端的IP地址,还可以直接配置静态转发表。原创 2023-12-09 18:20:43 · 35637 阅读 · 0 评论 -
【docker】Docker网络与iptables
Docker能为我们提供很强大和灵活的网络能力,很大程度上要归功于与iptables的结合。在使用时,你可能没有太关注到 iptables在其中产生的作用,这是因为Docker已经帮我们自动的完成了相关的配置。iptables在Docker中的应用主要是用于网络流量控制和安全控制。可以使用iptables规则来限制Docker容器的网络访问,以及将外部流量重定向到Docker容器。docker的daemon进程有个--iptables的参数,可以使用它来控制是否要自动启用iptables。原创 2023-11-18 10:52:13 · 36322 阅读 · 0 评论 -
【docker】iptables实现NAT
iptables是一个Linux内核中的防火墙工具,可以被用来执行各种网络相关的任务,如过滤、NAT和端口转发等,可以监控、过滤和重定向网络流量。原创 2023-11-18 10:39:15 · 31076 阅读 · 0 评论 -
【Docker】iptables命令的使用
在iptables中,可以创建自定义链(Custom Chains)来组织和管理防火墙规则。自定义链可以以更高层次和更好的可读性来管理规则,使配置和维护更加简单。创建链mychain此时filter表中多了一条MYCHAIN链。禁止的网段访问本机,丢弃源地址的流量。将所有传入TCP端口80的流量传递到MYCHAIN自定义链进行处理。如果不调用自定义的规则链,则自定义的规则链无效。原创 2023-11-09 09:28:27 · 40579 阅读 · 0 评论 -
【Docker】iptables基本原理
通过iptables,可以对本机提供的网络服务 (FTP、WEB、EMAIL、DB…) 进行保护,通过规则进行过滤。iptables并不是真正的防火墙,可以理解为一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的安全框架中,这个安全框架才是真正的防火墙,这个框架的名字叫netfilter。netfilter位于内核空间,而iptables其实是一个命令行工具,位于用户空间。netfilter/iptables组成Linux平台下的包过滤防火墙。原创 2023-11-09 09:25:31 · 39421 阅读 · 0 评论 -
【Docker】Linux路由连接两个不同网段namespace,连接namespace与主机
如果两个namespace处于不同的子网中,那么就不能通过bridge进行连接了,而是需要通过路由器进行三层转发。然而Linux并未像提供虚拟网桥一样也提供一个虚拟路由器设备,原因是Linux自身就具备有路由器功能。路由器的工作原理是这样的:路由器上有2到多个网络接口,每个网络接口处于不同的三层子网上。路由器会根据内部的路由转发表将从一个网络接口中收到的数据包转发到另一个网络接口,这样就实现了不同三层子网之间的互通。原创 2023-10-31 10:05:50 · 32608 阅读 · 3 评论 -
【计算机网络】零拷贝之MMAP
mmap/munmap接口是用户空间的最常用的一个系统调用接口,无论是在用户程序中分配内存、读写大文件,链接动态库文件,还是多进程间共享内存,都可以看到mmap/munmap的身影。原创 2022-07-19 15:00:00 · 21713 阅读 · 0 评论 -
LVS+Keepalived之DR模式配置
LVS+Keepalived之DR模式配置理论基础LVS直接配置DR模式,会存在一个问题,LVS负载均衡器是单点,容易发生单点故障,这样就会造成所有的服务都无法访问,这是不能容忍的。解决单点故障的方法当然是一变多!但是入口的IP地址只能有一个,怎么变多?怎么实现多点?有2种形式:主备模型:备用机要以最快的速度接管原来的VIP(virtual IP),只有主机对外提供服务,只有主机挂了的时候,备机才顶上去。主主模型:所有的LVS都是主,现在要借用其他形式搞定只有一个的入口IP地址,比如动态DNS。原创 2020-11-27 16:17:54 · 25421 阅读 · 2 评论 -
LVS之NAT、TUN模式配置
LVS之NAT、TUN模式配置LVS之DR请参考上一篇文章。NAT模式实验服务器IP及部署角色如下:node01:192.168.252.10,负载均衡器。node02:192.168.252.11,Real Server,上面部署httpd,对外提供服务。node03:192.168.252.12,Real Server,上面部署httpd,对外提供服务。部署图如下:具体部署步骤如下:node02、node03分别安装httpd,并在浏览器测试能正常访问页面。node02原创 2020-11-26 10:53:19 · 14440 阅读 · 2 评论 -
LVS三种负载均衡方式NAT、DR、NAT
LVS三种负载均衡方式LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是http://www.linuxvirtualserver.org/.现在LVS已经是Linux内核标准的一部分。使用LVS可以达到的技术目标是:通过LVS达到的负载均衡技术和Linux操作系统实现一个高性能高可用的Linux服务器群集,它具有良好的可靠性,可拓展性和可操作性,从而以低廉的成本实现最优的性能。为什么Tomcat承受的并发少?因为原创 2020-11-25 14:33:13 · 17372 阅读 · 5 评论 -
HTTPS工作原理
HTTPS工作原理在传统的HTTP协议中,在网络上传播的信息有可能被窃听,篡改。而HTTPS的引入,就是为了解决这些安全问题,下面我们就来探究一下HTTPS的工作原理。什么是HTTPSHTTPS是一种以安全为目标的HTTP协议,简单来说就是HTTP的安全版。即在HTTP层下面加入SSL层,SSL层负责加解密,HTTPS的安全基础是SSL。SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保原创 2020-11-23 16:57:07 · 27981 阅读 · 0 评论 -
零拷贝技术的原理与在java中应用
零拷贝技术的原理与应用零拷贝(Zero-copy)技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除传输数据在存储器之间不必要的中间拷贝次数,从而有效地提高数据传输效率。减少了用户进程地址空间和内核地址空间之间因为上下文切换而带来的开销。注意:零拷贝并不是不需要拷贝,只是减少不必要的拷贝次数与线程上下文切换次数。Linux的I/O机制与DMA在早期计算机中原创 2020-11-19 11:15:08 · 20493 阅读 · 3 评论 -
socket通信之epoll模型
socket通信之epoll模型综合select和poll的一些优缺点,Linux从内核2.6版本开始引入了更高效的epoll模型,本节我们来详细介绍epoll模型。linux中并没有一个epoll函数,而是提供了三个以epoll开头的函数:epoll_createepoll_ctlepoll_wait有关linux官方对epoll的解释可以参考man 7 epoll。epoll_createepoll_create函数原型如下:#include <sys/epoll.h>原创 2020-11-18 13:42:31 · 32831 阅读 · 8 评论 -
socket通信之listen函数
socket通信之listen函数listen函数原型如下:#include <sys/types.h>#include <sys/socket.h>int listen(int sockfd, int backlog);第一个参数sockfd为创建socket返回的文件描述符。第二个参数backlog为建立好连接处于ESTABLISHED状态的队列的长度。backlog的最大值128(linux原文描述如下):If the backlog argument原创 2020-11-17 10:19:35 · 34782 阅读 · 2 评论 -
socket通信之bind函数
socket通信之bind函数bind函数的原型如下:#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);使用如下:... ...// bind port struct sockaddr_in bindaddr;bindaddr.sin_fa原创 2020-11-16 16:18:30 · 22916 阅读 · 0 评论 -
linux下的socket通信
linux下的socket通信在linux下,无论多么复杂的服务器或客户端程序,无论什么编程语言实现的,其底层都离不开linux内核提供的系统调用(也就十多个函数),其网络通信的基本流程一定如下所述:对于服务器,其通信流程一般有如下步骤:调用socket函数创建socket,这一步会创建一个文件描述符FD。调用bind函数将socket(也就是FD)绑定到某个ip和端口的二元组上。调用listen函数开启侦听端口。调用accept阻塞等待接受连接,当有客户端请求连接上来后,产生一个新的sock原创 2020-11-13 10:48:13 · 25773 阅读 · 5 评论 -
HTTP协议报文结构
HTTP协议HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议,是一种应用层的协议。URL与URI的区别统一资源标识符URI(uniform resource identifier):用来唯一标识一个资源,这个资源可以一个名字(URN)、一串编号、一个地址(URL)…统一资源定位符URL(uniform resource locator):用来唯一定位一个资源,这个资源原创 2020-11-02 14:30:34 · 17529 阅读 · 2 评论 -
图解数据在网络中的传输过程
数据在网络中的传输过程在计算机网络当中,数据是怎么样保证准确的从客户端发送到服务器端的,这是本文探究的重点。下图是本文中使用的网络拓扑图,数据从客户端发送给服务器端。客户端各层对数据的封装java实现客户端的代码如下:Socket socket = new Socket("192.168.3.6", 8899);try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInp原创 2020-10-30 10:50:31 · 67142 阅读 · 20 评论 -
计算机网络体系结构
计算机网络体系结构计算机网络是利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件及协议实现资源共享和信息传递的系统。网络模型OSI七层模型,开放系统互连参考模型(Open System Interconnect,简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。其目的是为异种计算机互连提供一个共同的基础和标准框架,并为保持相关标准的一致性和兼容性原创 2020-10-28 21:43:54 · 15239 阅读 · 0 评论 -
WireShark抓取TCP四次挥手报文实战
TCP四次挥手四次挥手的流程挥手的过程可以由任何一方发起,这里以服务器端发起为例说明:第一次挥手:服务器端发出FIN,用来断开服务器端到客户端的数据传送,进入FIN-WAIT-1状态第二次挥手:客户端收到服务器端的FIN后,发送ACK确认报文,进入CLOSE-WAIT状态第三次挥手:客户端发出FIN,用来断开客户端到服务器端的数据传送,进入LAST-ACK状态第四次挥手:服务器端收到客户端的FIN后,发送ACK确认报文,进入TIME-WAIT状态,服务器端等待2个最长报文段寿命后进入Close原创 2020-07-03 10:48:42 · 27979 阅读 · 2 评论 -
Wireshark抓取TCP三次握手包
TCP三次握手TCP协议是一个我们每天都在使用的网络通讯协议,因为绝大部分的网络连接都是建立在TCP协议上的,比如你此刻正在看的这篇文章是建立在HTTP应用层协议的基础上的,而HTTP协议的底层则是建立在TCP的传输层协议上的。下面我们来分析一下TCP三次握手的执行流程,以及为什么需要三次握手?TCP是什么TCP(Transmission Control Protocol,传输控制协议)是一个面向连接的、可靠的、基于字节流的传输层协议。从它的概念中我们可以看出TCP的三个特点:面向连接、可靠性和面向原创 2020-07-03 09:31:41 · 19061 阅读 · 0 评论