Skip to main content

Command Palette

Search for a command to run...

Linux网络编程:网络基础

Published
1 min read

什么是协议?

协议就是一组规则,来指导我们进行通信

OSI七层模型

TCP/IP四层协议

网络传输流程—>数据没有封装之前,是不能在网络中进行传递的

以太网帧协议

ARP协议:根据IP地址发送ARP请求 获取Mac地址

以太网帧协议:根据Mac地址,完成数据的传输

IP协议

TCP协议

C/S B/S模型

三次握手

四次握手

高并发服务器

  • 多进程并发

    • 调用socket(),创建一个监听套接字

    • bind() 绑定地址结构 Struct soketaddr_in addr

    • listen() 设置监听上限

    • while(1)

    • 父进程

  • 多线程并发

    • 调用socket(),创建一个监听套接字

    • bind() 绑定地址结构 Struct soketaddr_in addr

    • listen() 设置监听上限

    • while(1)

    • 子线程

  • 在虚拟机中,如果我们想要连接不是主机的其他设备上的服务器,需要将我们的虚拟机网络设置为桥接模式,并添加在连接中,然后就可以在同一个局域网中进行连接

  • 如果想要将文件上传到服务器 scp -r ./logs/ user@192.168.1.100:/var/log/

    你的文件所在位置 你想要传给谁,传到他的哪儿

  • read函数的返回值

  • netstat -apn |grep client 查看client的通信状态

  • 使用nc IP地址 端口号 可以不必创建client客户端也可以链接服务器

  • TCP状态机中的time_wait这个状态只有主动关闭链接的一方才会经历

  • 服务器先主动关闭请求,然后在运行服务端程序会显示 this adress is already use 的原因是因为主动关闭链接的一方会经历time_wait而time_wait状态会经历2MSL,因此再次去尝试绑定那个端口和IP地址就会出错

  • 2MSL存在的意义:即保证最后一个ACK应答能够正确被对端接收。(保证对端没收到我发的ACK,对端会再次发送发送FIN请求)

  • 端口复用

  • shutdown(int fd,int how) how的取值决定关闭本端的读缓冲、写缓冲还是都关:how: SHUT_RD SHUT_WR SHUT_RDWR

    • 他与close有这样的区别,就是shotdown如果关闭一个文件(有多个文件描述符指向它),会将所有指向他的文件描述符全部关闭,而close则是将指向该文件的文件描述符减1

More from this blog

Redis学习

1.什么是SSD HDD作为存储传统的数据库? SSD:固态硬盘---使用闪存芯片存储数据 无机械部件 特点:读写速度快(尤其是随机读写)、延迟低、抗震性好,但单位容量成本较高。 HDD:机械硬盘--传统机械硬盘 特点:容量大、成本低,但读写速度较慢(尤其是随机读写),延迟高。 2.什么是非易失性持久化 非易失性持久化 = 靠谱的硬件 (断电不丢数据的 SSD/PMEM) + 严谨的软件策略 (确

Mar 4, 20261 min read

分布式存储系统面试问题解析

共识算法剖析 raft共识算法 1.在你的 C++ 实现中,如果 Leader 发送 AppendEntries 给 Follower,但 Follower 的日志落后太多(比如中间缺了 100 条),Raft 论文建议是一个一个往前找(nextIndex--)。这种做法在高性能存储中显然是不可接受的,你会如何优化这个“回溯”过程? 在工程实现中,我会从两个维度优化日志冲突后的同步效率: 1. 快

Feb 9, 202613 min read

Unix环境编程:杂谈

动态加载 API 进程管理 什么是进程 进程的创建 进程的终止与遗言函数 进程资源回收 进程的映像更新 ps -o pid,ppid,pgrp,comm 这个linux命令是将当前终端上运行的进程打印出来 进程中使用环境变量 子进程环境变量改变 不会更改父进程的环境变量 进程间通信 有名管道不存储数据 其本身大小为 0 当一个进程写入数据进去时 如果没有进程读取数据那么该写进程就会堵塞在哪里 同理 如果读进程想要读取数据 但是却没有数据...

Jan 30, 20263 min read

Unix环境编程:第一章

1.1操作系统的介绍 1.2 计算机系统的分层 1.3 编译过程 ?上一个命令的运行结果 echo 就是输出上一个命令的运行结果 哎linux环境下文件中查找一个元素 即在命令模式下 输入/+你要查找的字符 即/printf 这样 然后找到之后 n表示查找下一条 shift+n表示上一条 file+文件名 查=查看文件是否可运行 1.4 多模块开发 变量的定义是为变量扩充作用域 而变量的声明需要为变量内存空间 gcc -c 文件 检验是否存在语法错误 nm 目标文...

Jan 30, 20261 min read

C++ Stl杂项

迭代器特性 输入流的容器特性 迭代器对算法的影响 仿函数和函数对象 分配器 对于平常的我们内存的使用,直接使用new delete 即可 使用分配器的话还需要记住自己当时申请了多少的内存 很不方便 哈希表深度探索 哈希容器 哈希表在扩充时,会先将自身大小乘以2 然后在选择自身2倍距离最近的一个质数 作为新的大小 哈希函数 以哈希表为底层支撑的适配器 红黑树 容器 list容器 forward_list 对于标准库,其本身提供一个sort排序函数,但某些容器也提供sort服务...

Jan 29, 20261 min read

xianyu-sheng

29 posts