网络编程
文章平均质量分 90
walkerkalr
学无止境,梦想不止
展开
-
TCP/IP协议族——ARP、DNS工作原理及实例详解
测试网络:通过VMware创建了两个虚拟机,并利用桥接方式联网以此模拟两台主机连接一台路由器的情况。测试网络图如下:ARP协议工作原理ARP协议能实现任意网络地址到任意物理地址的转换,这里仅讨论IP地址到以太网地址(MAC地址)的转换。其工作原理是:主机向自己所在网络广播一个ARP请求,该请求包含目标机器的网络地址。此网络上的其他机器都将接收到这个请求,但只有被请求的目标机...原创 2014-06-25 10:33:14 · 6458 阅读 · 0 评论 -
基于OpenVSwitch实现Vlan进行测试
背景目前公司二层网络机器和交换机越来越多,当广播的时候二层网络上的机器都会受到报文,这样网络性能就会下降。解决方案:1.物理隔离:需要通信的交换机连接在单独的交换机上,交换机之间通过路由器连接。2.虚拟隔离(VPC采用的技术):VLan/VxLan/GRE。使用VLan可以连接在一个交换机上的机器进行通信隔离。VLan介绍VLan技术在原来的二层报文的头上加一个 TAG,里面有一个 V...原创 2019-02-12 14:26:30 · 3533 阅读 · 0 评论 -
OVS+Docker实现TCP/IP详解中的实验环境
ovs+docker实现TCP/IP详解中的实验环境本文搭建了TCP/IP详解中的实验环境,以用于学习TCP/IP协议。一.网络配置 为VMARE虚拟机添加NAT和Host网络,DHCP启动 修改网络配置文件 vi /etc/network/interfaces,编辑如下 # This file describes the network interfaces availa...原创 2019-02-11 15:10:23 · 948 阅读 · 0 评论 -
TCP/IP协议族
第一章 TCP/IP协议族1.1 TCP/IP协议族体系结构以及主要协议 1.1.1数据链路层 数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。 数据链路层两个常用的协议是ARP(AddressResolve Protocol,地址解析协议)和RARP(Reverse Address Resolve Proto...原创 2014-06-25 09:15:24 · 2778 阅读 · 0 评论 -
Linux高性能服务器编程——系统检测工具
系统检测工具tcpdumptcpdump是一款经典的转包工具,tcpdump给使用者提供了大量的选项,泳衣过滤数据报或者定制输出格式。lsoflsof是一个列出当前系统打开的文件描述符的工具。通过它我们可以了解感兴趣的进程打开了哪些文件描述符,或者我们感兴趣的文件描述符被哪些进程打卡了。ncnc命令主要被用来快速构建网络连接。原创 2014-07-14 10:55:51 · 1463 阅读 · 1 评论 -
Linux高性能服务器编程——I/O复用
IO复用I/O复用使得程序能同时监听多个文件描述符,通常网络程序在下列情况下需要使用I/O复用技术:客户端程序要同时处理多个socket客户端程序要同时处理用户输入和网络连接TCP服务器要同时处理监听socket和连接socket,这是I/O复用使用最多的场合服务器要同时处理TCP请求和UDP请求。比如本章将要讨论的会社服原创 2014-07-01 20:50:13 · 1725 阅读 · 3 评论 -
TCP/IP协议族——IP工作原理及实例详解(上)
IP协议详解 本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包,来观察IP数据报传送过程中IP的格式,以及分片的过程。IP头部信息:IP头部信息出现在每个IP数据报中,用于指定IP通信的源端IP地址、目的端IP地址,指导IP分片和重组。IP数据报的路由和转发:IP数据报的路由和转发发生在出目标机器之外的所有主机和路由器上。他们决定数...原创 2014-06-25 14:53:19 · 4296 阅读 · 0 评论 -
Linux高性能服务器编程——进程池和线程池
进程池和线程池池的概念由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。池是一组资源的集合,这组资源在服务器启动之初就完全被创建并初始化,这称为静态资源分配。当服务器进入正是运行阶段,即开始处理客户请求的时候,如果它需要相关的资源,就可以直接从池中获取,无需动态分配。很显然,直接原创 2014-07-12 21:54:05 · 8435 阅读 · 8 评论 -
Linux高性能服务器编程——多进程编程
多进程编程多进程编程包括如下内容:复制进程影映像的fork系统调用和替换进程映像的exec系列系统调用。僵尸进程以及如何避免僵尸进程进程间通信(Inter-Process Communication,IPC)最简单的方式:管道3种进程间通信方式:信号量,消息队列和共享内存fork系统调用#inclu原创 2014-07-04 19:09:21 · 1818 阅读 · 1 评论 -
Linux高性能服务器编程——多线程编程(下)
多线程编程条件变量如果说互斥锁是用于同步线程对共享数据的访问的话,那么条件变量则是用于线程之间同步共享数据的值。条件变量提供了一种线程间的通信机制:当某个共享数据达到某个值得时候,唤醒等待这个共享数据的线程。条件本身是由互斥量保护的。线程在改变条件状态前必须首先锁住互斥量,其他现成在获得互斥量之前不会察觉到这种变化,因为必须锁住互斥量以后才能计算条件。原创 2014-07-06 22:34:17 · 1648 阅读 · 0 评论 -
Linux高性能服务器编程——多线程编程(上)
多线程编程Linux线程概述线程模型 线程是程序中完成一个独立任务的完整执行序列,即一个可调度的实体。根据运行环境和调度者的身份,线程可分为内核线程和用户线程。内核线程,在有的系统上也称为LWP(Light Weigth Process,轻量级进程),运行在内核空间,由内核来调度;用户线程运行在用户空间,由线程库来调度。当进程的一个内核线程获得CPU的使用权时,它就加载并原创 2014-07-06 22:22:22 · 2219 阅读 · 0 评论 -
Linux高性能服务器编程——信号及应用
信号信号是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。Linux信号可由如下条件产生:对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。比如输入Ctrl+C通常会给进程发送一个终端信号。2.系统异常系统状态变化运行kill命令或调用kill函数Linux信号概述原创 2014-07-03 21:36:21 · 1273 阅读 · 0 评论 -
Linux高性能服务器编程——高级I/O函数
高级I/O函数pipe函数pipe函数用于创建一个管道,实现进程间的通信。#include int pipe(int pipefd[2]);通过pipe函数创建的文件描述符fd[0]和fd[1]分别构成管道的两端,往fd[1]写入的数据可以从fd[0]读出,不能反过来。管道内部传输的数据时字节流,和TCP字节流概念相同,但有区别,管道本身拥有一个原创 2014-06-30 19:30:21 · 1220 阅读 · 0 评论 -
Linux高性能服务器编程——Linux网络基础API及应用
Linux网络编程基础API详细介绍了socket地址意义极其API,在介绍数据读写API部分引入一个有关带外数据发送和接收的程序,最后还介绍了其他一些辅助API。socket地址API主机字节序和网络字节序字节序分为大端字节序和小端字节序。小端字节序又被称为主机字节序,大端字节序被称为网络字节序。大端字节序是指一个整数的高位字节存储在内存的低地址处,低原创 2014-06-30 15:29:32 · 1557 阅读 · 0 评论 -
Linux高性能服务器编程——定时器
定时器服务器程序通常管理着众多定时事件,因此有效组织这些定时事件,使之能在预期的时间点被触发且不影响服务器的主要逻辑,对于服务器的性能有着至关重要的影响。位置我们要将每个定时事件封装成定时器,并使用某种容器类型的数据结构,比如链表、排序链表和时间轮将所有定时器串联起来,以实现对定时事件的统一管理。Linux提供三种定时方法:1.socket选项SO_RECVTI原创 2014-07-04 10:37:30 · 3005 阅读 · 1 评论 -
tcp/iP协议族——IP工作原理及实例详解(下)
IP协议详解上一篇文章文章主要介绍了IP服务的特点,IPv4头部结构IP分片,并用tcpdump抓取数据包,来观察IP数据报传送过程中IP的格式,以及分片的过程。本文主要介绍IP路由,IP转发,重定向和IPv6头部结构。IP路由IP协议的一个核心任务是数据报的路由,即决定发送数据报到目标机器的路径。为了理解IP路由过程,我们先简要分析IP模块的基本流程。IP模块工作流程...原创 2014-06-25 19:31:54 · 2441 阅读 · 0 评论 -
TCP协议详解(上)
TCP协议详解3.1 TCP服务的特点TCP协议相对于UDP协议的特点是面向连接、字节流和可靠传输。使用TCP协议通信的双方必须先建立链接,然后才能开始数据的读写。双方都必须为该链接分配必要的内核资源,以还礼链接状态和连接上数据的传输。TCP链接是全双工的,即双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开连接以释放系统资源。TC原创 2014-06-26 19:54:15 · 3684 阅读 · 1 评论 -
TCP协议详解(下)
TCP协议详解TCP状态转移TCP连接的任意一端在任一时刻都处于某种状态,当前状态可以通过netstat命令查看,这里我们主要讨论TCP连接从建立到关闭的整个过程中通信两端状态的变化。如图是TCP状态转移过程。 图中,粗虚线表示典型的服务器连接的状态转移;粗实线显示典型的客户端连接的状态转移。TCP状态转移总图 服务器转移过程,这里我们说的连接状态指定...原创 2014-06-27 14:17:37 · 2841 阅读 · 0 评论 -
LVS+Keeplived原理与实现
LVS介绍常用的软负载均衡由如下几种nginx+keeplivedLVS+keeplivedHaproxy+keepliveDNS负载均衡LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,传输层上有我们熟悉的TCP/UDP,LVS支持TCP/UDP的负载均衡。LVS的转发主要通过修改IP地址(NAT模式,分为源地址修改SNAT和目标地址修改DNAT)、修改目标...原创 2019-02-12 15:07:12 · 1145 阅读 · 1 评论