网络编程(Socket)

本文介绍了网络编程的基本概念,包括服务器如何通过IP和端口建立连接,以及客户端如何通过BIO和NIO进行通信。BIO是一种同步阻塞模式,每个连接对应一个线程;NIO则是同步非阻塞,采用I/O多路复用减少系统调用。TCP报文结构中包含确认序列号、序号等关键字段。DNS解析过程涉及顶级域名服务器和权威域名服务器的交互。
摘要由CSDN通过智能技术生成

1,网络编程

服务器端创建IP和端口号,之后客户端通过服务器的IP和端口号进行连接,服务器通过accept接受来自客户端的请求(获取scoket),通过socket获取字节流来进行读写操作。

socket 套接字 其实是服务器ip:port和客户端ip:port的组合。

2,BIO/NIO

BIO:同步阻塞型IO流,每一个连接对应一个线程,每一个客户端对应一个线程,是的一个服务器对应多个客户端。

NIO:同步非阻塞异步IO ,可以看作是I/0多路复用模型

同步非阻塞IO模型中,应用程序员会一直发起read调用,等待数据从内核空间拷贝到用户空间的这段时间内,线程依然是阻塞的,直到内核把数据拷贝到用户空间。

但这存在的问题:应用程序不断进行IO系统调用轮询数据是否以及准备好的过程是十分消耗CPU资源的。

为了解决这个问题,I/O多路复用就上场了。

在多路复用模型中,线程首发起select调用,询问内核数据是否准备就绪,等内核把数据准备好了,用户线程再发其read调用,read调用的过程(数据从内核空间-》用户空间)还是阻塞的。

IO多路复用模型,通过减少无效的系统调用,减少cpu资源的消耗。

其中select,epoll的区别:

select需要轮回询问,效率较低:仅知道有I/O事件发生,但不知道是哪一个。

epoll是时间驱动的,即会把哪个流发生那种IO时间通知我们,然后处理。

3,TCP报文格式:

报头+数据 其中报头有32位的确认序列号(ack),32位的序号(seq) 以及ACK,FIN等标志位(0/1表示)还包含窗口

客户端的发送报文SYN位置位1,服务端的应答报文ACK为置为1。

4,DNS解析过程

(www.baidu.com)从右到左构造域名结构树查找 。包括顶级域名服务器管理权威域名服务器,权威域名服务器管理主机域名管理器。

5,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值