![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux网络编程
文章平均质量分 61
Linux网络编程
linuxcpp_
这个作者很懒,什么都没留下…
展开
-
TCP状态转换以及端口复用
TCP状态转换1 图示2 状态转换分析3 设置端口复用4 半关闭函数1 图示粗实线代表主动端,虚线表示被动方,细实线表示一些其他状态。可以通过 netstat -apn | grpe 端口号 查看服务器/客户端的状态。2 状态转换分析主动发起连接请求端:CLOSE – 发送SYN – SEND_SYN – 接收ACK、SYN – 发送ACK – ESTABLISHED(数据通信状态)主动关闭连接请求端:ESTABLISHED(数据通信状态) – 发送FIN – FIN_WAIT_1原创 2021-04-12 20:19:52 · 607 阅读 · 0 评论 -
read/recv函数返回值
read/recv函数返回值在linux网络编程中:read/recv函数返回值> 0 实际读到的字节数= 0 已经读到结尾(对端已经关闭)-1 需要进一步判断errno的值errno = EAGAIN or EWOULDBLOCK 设置了非阻塞方式读,并且没有数据到达errno = EINTR 慢速系统调用被中断errno = “其他” 异常...原创 2021-04-11 02:15:06 · 263 阅读 · 0 评论 -
多线程并发服务器
多线程并发服务器1 多线程并发服务器思路分析2 多线程并发服务器代码实现1 多线程并发服务器思路分析2 多线程并发服务器代码实现#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/socket.h>#include <arpa/inet.h>#include <errno.h>原创 2021-04-11 02:00:37 · 153 阅读 · 0 评论 -
多进程并发服务器
多进程并发服务器1 多进程并发服务器思路分析2 多进程并发服务器代码实现1 多进程并发服务器思路分析2 多进程并发服务器代码实现#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/socket.h>#include <arpa/inet.h>#include <signal.h>原创 2021-04-11 01:08:01 · 102 阅读 · 0 评论 -
socket编程错误处理函数封装代码
socket编程错误处理函数封装代码将c/s模型中常用函数的错误处理进行封装。(可突出代码的逻辑)wrap.h#ifndef __WRAP_H_#define __WRAP_H_#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/socket.h>#in转载 2021-04-10 23:35:04 · 99 阅读 · 0 评论 -
滑动窗口(TCP流量控制)
滑动窗口1 滑动窗口(TCP流量控制)1 滑动窗口(TCP流量控制)对于UDP的描述:如果发送端发送的速度较快,接收端接收到数据后处理的速度较慢,而接收缓冲区的大小是固定的,就会丢失数据。TCP协议通过“滑动窗口(Sliding Window)”机制解决这一问题。看下图的通讯过程:发送端发起连接,声明最大段尺寸是1460,初始序号是0,窗口大小是4K,表示“我的接收缓冲区还有4K字节空闲,你发的数据不要超过4K”。接收端应答连接请求,声明最大段尺寸是1024,初始序号是8000,窗口大小是6K。发转载 2021-04-10 22:40:21 · 155 阅读 · 0 评论 -
网络名词术语解释
网络名词术语解释1 路由(route)2 路由器工作原理3 路由表(Routing Table)4 路由条目5 缺省路由条目6 路由节点7 以太网交换机工作原理8 hub工作原理9 半双工/全双工10 DNS服务器11 局域网(LAN)12 广域网(WAN)13 端口14 MTU1 路由(route)路由(名词)数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。路由(动词)某个路由节点为数据包选择投递方向的选路过程。2 路由器工作原理路由器(Router)是连接因转载 2021-04-10 21:15:37 · 328 阅读 · 0 评论 -
网络基础
网络基础1 分成模型1.1 OSI七层模型1.2 TCP/IP四层模型2 协议的概念2.1 什么是协议2.2 典型协议3 网络应用程序设计模式3.1 C/S模式3.2 B/S模式3.3 优缺点4 数据通信过程分析5 协议格式5.1 数据包封装5.2 以太网帧格式5.3 ARP数据报格式5.4 IP段格式5.5 UDP数据报格式5.6 TCP数据报格式1 分成模型1.1 OSI七层模型物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(转载 2021-04-10 20:31:30 · 129 阅读 · 0 评论 -
TCP三次握手四次挥手
TCP三次握手四次挥手1 图示2 建立连接(三次握手)的过程3 数据传输的过程4 关闭连接(四次挥手)的过程5 扩展-telnet失败1 图示在这个例子中,首先客户端主动发起连接、发送请求,然后服务器端响应请求,然后客户端主动关闭连接。两条竖线表示通讯的两端,从上到下表示时间的先后顺序,注意,数据从一端传到网络的另一端也需要时间,所以图中的箭头都是斜的。双方发送的段按时间顺序编号为1-10,各段中的主要信息在箭头上标出,例如段2的箭头上标着SYN, 8000(0), ACK1001, ,表示该段中转载 2021-04-10 19:52:13 · 105 阅读 · 0 评论 -
TCP客户端与服务端代码
TCP客户端与服务端代码服务端客户端服务端#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <sys/types.h>#include <arpa/inet.h>#include <ctype.h>int main(){原创 2021-04-10 19:18:47 · 193 阅读 · 0 评论 -
socket编程
socket编程1 套接字概念1 套接字概念Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作一致。区别是管道主要应用于本地进程间通信,而套接字多应用于网络进程间数据的传递。在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程。“IP地址+原创 2021-04-10 19:02:57 · 97 阅读 · 0 评论