Linux总结-----2

Linux知识点

1.网络编程

提供进程间通信
1、网络 :由若干结点和链接这些节点的链路组成(计算机、交换机、路由器)
目的:进行信息交互、资源共享
2、互联网:多个网络连接起来构成互联网

1.1 IP地址

1、ip地址:唯一标识一台主机
端口号:在主机上标识一个进程
2、套接字地址结构:

  • 创建套接字:socket()
  • 确定进程:ip+port
  • 网络字节序列:大端

1.2 协议

一组约定,规则
1、分层:
tcp/ip 模型:数据链路层->网络层->传输层->应用层
网络层:ip
传输层:tcp、udp
应用层:http
2、为什么分层
将大问题分模块,小模块易于实现。分为不同的层,每一层采用合适的办法解决该层的问题,实现起来更灵活。

2.编程流程

2.1 TCP服务器客户端编程流程

tcp特点:面向连接的,可靠的(应答确认,超时重传,滑动窗口进行流量控制,乱序重排,去重),流式服务
Linux总结-----2
connect():由客户端程序执行,开始发起连接,也就是开始进行三次握手
Linux总结-----2
send():
Linux总结-----2
查看接收/发送缓冲区:netstat -natp
端口:小于1024是知名端口(管理员)
5000以内,保留的端口,
5000以上,临时端口

close():
四次挥手
Linux总结-----2
也可以三次完成
1、客户端连接在收到服务器的结束报文段后,并没有直接进入CLOSED状态,而是转移到TIME_WAIT状态
TIME_WAIT状态存在的原因:

  • 可靠的终止TCP连接
  • 保证让迟来的TCP报文段有足够时间被识别丢弃

2.2 UDP 服务器客户端编程流程

udp特点:无连接,不可靠,数据报
send:发送出去就不管,实时性,可能会丢包

2.3 HTTP(应用层协议)

超文本传输协议
Linux总结-----2
长链接:两个以上的请求可以复用同一个连接
短连接:发送一个请求,就会close()

2.4 I/O复用

方法: select poll epoll
poll和epoll的区别:
poll(select):

  • 每次循环都需要向内核空间拷贝数据
  • 内核实现:轮询,O(n)
  • 遍历所有描述符 O(n)

epoll(处理大量描述符):
创建:epoll_creat、epoll_ctl、epoll_wait

  • 创建内核时间表,每个描述符只需要拷贝一次
  • 内核实现:注册回调函数O(1)
  • 用户检索到就绪面描述符O(1)
  • LT:一直提醒,直至实现
  • ET:只提醒一次

2.5守护进程编程流程

守护进程是在后台运行不受终端控制的进程

  1. 先fork()再退出父进程,变为普通的组员进程
  2. 调用setsid(),成功创建新的会话
  3. fork()退出父进程(为了丢掉组员进程身份)
  4. chdir(“/”)更改工作路径
  5. umask(0)清除掩码(去除权限)
  6. close 关闭描述符
  7. 处理僵死进程

今天也要好好学习呀~

上一篇:I/O多路复用详解


下一篇:【网络编程】epoll基本模型