Linux网络编程:网络基础
什么是协议?
协议就是一组规则,来指导我们进行通信
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
