redis网络编程---------------epoll----------socket和网络编程

IO多路复用:epoll,poll,select

传统IO一个教室50个学生老师挨个问完成了没,50遍

epoll:谁写完把东西教我,就一遍            nginx,tomcat

redis:单线程-------------网络编程            io模型牛逼

java程序通过native方法,用jni技术调用c方法

客户端与服务器端进行链接的时候有三个socket

通信

http 基于tcp协议     http1.0之前是短连接(一个网页中的图片每一个链接都会发一次请求),1.1之后是长连接(一次请求完成)   不太理解

tcp连接-------------socket.write()    socket.write()   一次tcp请求,多次socket连接                长连接

tcp连接-------------socket.write()   close()       tcp连接-------      socket.write()   一次tcp请求,一次socket连接       短连接

tcp协议如何知道响应已经完成?响应头的内容,内容长度

tcp协议三次握手,四次挥手

看tcp三次握手工作原理,如图所示。主机A想要与主机B进行TCP通信,首先他需要向B发送一个syn同步序列编号syncsynchronized squsequence number用来标记保持同步,到这里第一次握手就结束了。第二次握手开始,主机B向A发送一个syn同步序列号和ack确认号确认号为A主机发送的syn号+1,到这里第二次握手结束。第三次握手开始主机A向主机B发送ack确认码为主机B的syn号+1,到此为止三次握手结束进入ESTABLISHED状态,开始进行数据传输。-------->问准备好了吗,准备好了你呢,我也准备好了

主机A想要向主机B结束tcp长连接,第一次挥手发送fin请求,第一次挥手结束。第二次挥手开始,主机B向主机A发送ack确认码,为fin号+1到这里第二次挥手结束。第三次握手开始主机B向A发送fin号结束。第四次挥手开始主机A向B发送ack号为fin+1,这时tcp连接结束--------------------->发送关,收到关,关闭收,收到

四次挥手会导致的问题:应用程序级别不再接受消息,但是内核级别还是会加收消息        谁先提出的关闭谁就要再等两分钟(网络传输时间的两倍)两分钟之内的时间这个端口时不能用的

 

 

bio问题:单线程解决不了bio问题,单线程的socket没办法解决并发因为他会阻塞(两个地方)      见注销代码

轮训是操作系统替你轮训,比自己写的轮训要快

nio:非阻塞主要是将list交给操作系统,让操作系统进行管理---------------见代码

 

 

 

 

bio要想不阻塞只能使用多线程,但是nio是单线程不阻塞

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值