TCP/IP网络编程
文章平均质量分 89
学习《TCP/IP网络编程》
Mr.liang呀
分享知识 探讨技术
展开
-
Linux编程--小注
文章目录第二章 IP协议详解第二章 IP协议详解摘抄两个名词:无状态:是指IP通信双方不同步传输数据的状态信息,因此所有的IP数据报的发送、传输和接收都是相互独立、没有上下文关系的;无状态服务最大的缺点是无法处理乱序和重复的IP数据报。无连接:是指IP通信双方都不长久的维持对方的任何信息。这样,上层协议每次发送数据的时候,都必须明确指定对方的IP地址。...原创 2022-03-14 16:32:04 · 125 阅读 · 0 评论 -
muduo---C++网络编程库
陈硕 muduo参考资料muduo源码剖析muduo基于Reactor模式实现Reactor模式也是目前大多数Linux端高性能网络编程框架和网络应用所选择的主要架构,例如内存数据库Redis和Java的Netty库等。muduo 架构整个架构依照reactor模式,如如下图:所谓的reactor模型,是有一个循环的过程,监听对应事件是否触发,触发时调用对应的callback函数进行处理;这里的事件在muduo中包括socket可读写事件、定时器事件。在其他网络库中如libevent也包原创 2022-01-16 15:21:10 · 3493 阅读 · 0 评论 -
深入了解 Reactor 网络编程架构模型
Reactor网络编程架构模型常见的网络编程模型有:Reactor Proactor Asynchronous Completion Token and Acceptor_Connector这里介绍最主流的reactor模型:通常网络编程模型处理的主要流程如下: initiate => receive => demultiplex => dispatch => process eventsI/O多路复用可以用作并发事件驱动(event-driven)程序的基础,即整个事件驱动原创 2022-01-16 14:32:28 · 2050 阅读 · 0 评论 -
Linux(ubuntu) 基础
本文主要讲解一些有关linux下的相关知识:文章目录一 shell 命令二 文件系统三 ubuntu磁盘管理操作四 Ubuntu下压缩和解压缩五 ubuntu用户和组六 ubuntu 文件权限管理七 Linux连接文件操作八 补充一 shell 命令1、目录信息查看命令lsls -a 显示目录所有文件及文件夹,包括隐藏文件,比如以.开头的ls test1/查看指定路径2、目录切换命令cd3、当前路径显示命令pwd4、系统信息查看命令uname5、清理屏幕命令clear6、显示文件内原创 2021-12-28 13:29:40 · 2388 阅读 · 2 评论 -
16 关于IO流分离的其他内容 && 17 优于select的epoll(IO复用功能)
**文章目录第16章 关于IO流分离的其他内容16.1 分离IO流16.1.1 两次IO流分离16.1.2 分离流的好处16.1.3 流分离带来的EOF问题16.2 文件描述符的复制和半关闭16.2.1 终止流时无法半关闭的原因第16章 关于IO流分离的其他内容:什么是流?调用fopen函数打开文件后,可以通过返回值 与文件进行数据交换。因此说调用fopen函数后创建了流(stream)**FILE *fopen(const char *path,const char *mode);其中,原创 2021-12-27 11:15:16 · 326 阅读 · 0 评论 -
准备的基础知识(三)
文章目录【抓包】【智能指针】【move函数】【 explicit关键字】【Effective C++】【纯虚函数】【vector list】【struct class】【http https session cookie】【函数指针】【空类占位】【C++递归】【extern关键字】【move移动构造函数】【系统调用】【段页式】【多进程 多线程】【僵尸进程 孤儿进程】【IPC】【内核】【GCC】【C++ 函数相关】【函数调用】【vector底层和const】【TCP拥塞控制】【一些知识】【OSI 模型】【域名原创 2021-12-26 14:17:11 · 2061 阅读 · 0 评论 -
14 多播和广播 && 15 套接字和标准IO
**第十四章 多播和广播**假设我们要向10000名用户发送相同的数据,如果使用TCP提供服务,则需要10000个套接字连接,即使使用了UDP套接字提供服务,也需要10000次数据传输。像这种需要向大量客户端发送相同数据时,会对服务器端和网络流量产生负面影响,这时可以使用多播技术解决。14.1 多播Multicast多播方式的数据传输基于UDP完成,区别在于,UDP数据传输以单一目标进行(一对一建立连接),而多播数据同时传递到加入特定组的大量主机,也就是说可以向多个主机传递数据。14.1.1原创 2021-12-23 18:11:04 · 134 阅读 · 0 评论 -
12 I/O复用 &&13 多种I/O函数
**十二章 I/O复用**12.1 基于I/O复用的服务器端采用多进程的方法构建服务器端,在每次客户端请求连接时,就会创建新的进程。因为创建进程需要大量的运算和内存空间,由于每个进程都具有独立的内存空间,因此相互间的数据交换也要求采用相对复杂的方法(IPC属于相对复杂的通信方法)I/O复用的方法构建服务器端会有效减少上面的缺点,但是该模型并不适用于所有情况,应根据目标服务器的特点采用不同的实现方法。12.1.1 复用是什么??“复用” 用行内话说时:在一个通信频道中传递多个数据信号技术定义原创 2021-12-22 13:42:41 · 251 阅读 · 0 评论 -
《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族
文章目录**第一章 TCP/IP协议族**1.1 TCP/IP协议族体系结构以及主要协议1.1.1 数据链路层1.1.2 网络层1.1.3 传输层1.1.4 应用层1.2 封装1.3 分用1.4 测试网络1.5 ARP协议工作原理1.5.1 以太网ARP请求/应答报文详解1.5.2 ARP高速缓存的查看和修改1.5.3 使用tcpdump观察ARP通信过程第一章 TCP/IP协议族1.1 TCP/IP协议族体系结构以及主要协议TCP/IP协议族是一个四层协议,自底向上分别是数据链路层、网络层、传输层原创 2021-12-21 20:25:38 · 1457 阅读 · 0 评论 -
十一 进程间通信
**第11章 进程间通信**本章主要讲解两个进程间交换数据的方法11.1 进程间通信的基本概念进程间通信(Inter Process Communication)意味着两个不同进程之间可以交换数据。因此,需要操作系统中提供两个进程可以同时访问的内存空间。11.1.1 进程间通信的理解我们知道,进程具有完全独立的内存结构,就连通过fork创建的子进程也不会与父进程共享内存空间,因此进程间的通信需要其他特殊的方法完成,这就是管道。11.1.2 通过管道实现进程间通信基于PIPE的进程间通信结原创 2021-12-21 12:33:54 · 225 阅读 · 0 评论 -
十行C++代码实现高性能HTTP服务 && 原理与实现
实战 干货!!话不多说,我们来一起看看,10行C++代码怎么实现一个高性能的Http服务,轻松QPS几十万int main() { WFHttpServer server([](WFHttpTask *task) { task->get_resp()->append_output_body("<html>Hello World!</html>"); }); if (server.start(8888) == 0) {原创 2021-12-20 11:06:04 · 1215 阅读 · 1 评论 -
十 多进程服务器端
**主要讲解多进程的具体实现**:10.1 进程概念以及应用10.1.1 并发服务器端的实现方法网络程序中 数据通信时间比CPU运算时间更多,因此,向多个客户端提供服务是一种有效利用CPU的方式有几种具有代表性的并发服务器端的实现模型和方法:1 多进程服务器端;通过创建多个进程提供服务2 多路复用服务器:通过捆绑并统一管理I/O对象提供服务3 通过生成与客户端等量的线程提供服务本文主要是讲解第一种模型10.1.2进程:占用内存空间的正在运行的程序CPU核个数和进程数目关系:核原创 2021-12-18 20:07:12 · 721 阅读 · 0 评论 -
九 套接字的多种可选项
本章主要介绍套接字的多种特性:9.1 套接字可选项和I/O缓冲大小9.1.1 套接字多种可选项上表中可以看出,套接字可选项是分层的。IPPROTO_IP 层是IP协议相关事项。IPPROTO_TCP层TCP协议相关的事项。SOL_SOCKET层是套接字相关的通用可选项。实际上可选项比上表多很多,但是不是都要背下来的,用的时候去查就行啦,用的多就记住了。下面挑选一些进行讲解。9.1.2 getsockopt && setsockopt我们几乎可以针对表中的所有选项进行读原创 2021-12-17 15:41:17 · 303 阅读 · 0 评论 -
七、优雅的断开套接字 && 八、域名及地址名
第七章 优雅的断开套接字之前我们调用close函数是单方面断开套接字的连接:7.1 基于TCP的半关闭掌握TCP的关闭过程是非常重要的,因为在建立连接的过程中是很稳定的,断开时是容易发生预想不到的情况的。7.1.1 但方面断开可能带来的问题:单方面的切断连接会让动作发出者无法传输数据也无法接收数据。下图展示的是A方单方切断了连接带来的效果。从图中可以看出,不仅仅A无法再继续发送数据,存储在A的输入缓冲的数据也会被销毁。为了解决这样的问题,“只关闭一部分数据交换中使用的流”的方法诞生了(原创 2021-12-16 16:11:37 · 141 阅读 · 0 评论 -
《Redis开发与运维》学习第九章
**第九章 哨兵Sentinel 架构**Redis Sentinel 架构的引入:9.1 基本概念9.1.1主从复制的问题9.1.2 高可用9.1.3 Redis Sentinel的高可用性原创 2021-12-15 18:30:02 · 1416 阅读 · 0 评论 -
四 基于TCP的服务器端/客户端
**第四章 基于TCP的服务器端/客户端(1)**主要内容:这里我们讨论通过套接字收发数据1.TCP与UDP的区别数据传输方式不同2.协议栈的层次关系:链路层->IP层->tcp/udp层->应用层。重点!3.基于TCP的服务器端和客户端详解服务器端定义的两个套接字的用途 serv_sock和clnt_sock(一个当做门卫,一个用于连接)4.详解connect函数(可以分配地址)5.回声服务器端和回声客户端的实现之前介绍套接字创建时我们选择的是 面向连接的套接字,原创 2021-12-15 17:49:45 · 3956 阅读 · 0 评论 -
三 地址族和数据序列
第三章 地址族和数据序列这章主要将主要讲解:如何为套接字分配IP地址和端口号IP地址的分类和区分网络字节序(大端序和小端序),htons htonl函数的使用inet_addr函数使用、inet_aton inet_ntoa函数使用3.1 分配给套接字的IP地址和端口号IP是 Internet Protocol (网络协议)的简写,是为收发网络数据而分配给计算机的值端口号是另一回事,不是给计算机的值,是给指定ip下的应用程序的需要。3.1.1 网络地址为了是计算机连网,并且收发数据,原创 2021-12-14 13:46:34 · 432 阅读 · 0 评论 -
二 套接字类型和协议设置
**第二章 套接字类型与协议设置========================================================================================================第二章主要内容:主要讲解socket函数的各个参数的含义以及涉及到的套接字协议#include <sys/socket.h>int socket(int domain, int type, int protocol)-> 成功时返回文件描述原创 2021-12-13 20:56:50 · 100 阅读 · 0 评论 -
一 理解网络编程和套接字
第一章 理解网络编程和套接字重点是套接字的使用:几个函数socket() bind() listen() accept() connect()几个函数的使用:socke函数的使用:#include <sys/socket.h>int socket(int domain,int type,int protocol); 成功返回文件描述符,失败返回-1bind函数的使用 #include <sys/socket.h> int bind(int原创 2021-12-13 17:08:45 · 1145 阅读 · 0 评论