JavaIO(一)-IO与网络编程基础及TCP详解

本文介绍了计算机的内核空间和用户空间,阐述了I/O操作的过程,特别是DMA在数据传输中的作用。接着讲解了网络编程的基础,包括网络分层模型和TCP/UDP的特点。详细讨论了TCP的三次握手、四次挥手过程,以及半连接、半关闭状态,还分析了TCP和UDP的适用场景,并提到了Socket编程在高性能服务器架构中的重要性。
摘要由CSDN通过智能技术生成

学IO之前需要先了解几个概念,这篇文章中不说同步、非同步,阻塞、非阻塞的概念,直接说太干。对IO中计算机底层比较感兴趣,可以读一下这篇IO和DMA原理

几个概念:

内核空间:所有的程序都需要加载到内存中才能运行,而操作系统也是程序的一种,程序被加载到内存之后,操作系统占用的这部分内存被称为内核空间。内核空间中的指令拥有最高指令权限,可以直接访问硬件,可以执行机器能够运行的任何指令,安全性要求极高也更为复杂。

用户空间:除操作系统之外的程序加载到内存中所占用的内存空间被称为用户空间。用户空间所能执行的指令知识所有指令中的一个子集,比如计算(add)可以读写(read,write)不行。用户没法直接访问计算机硬件,当然计算机硬件设备也没法直接访问用户空间。当进程请求 I/O 操作的时候,它执行一个系统调用将控制权移交给内核。

 

I/O概念:

所谓“ I/O”无非就是把数据移进或移出缓冲区。进程执行 I/O 操作,归结起来,也就是向操作系统发出请求,让它要么把用户缓冲区里的数据排干(write),要么用数据把用户缓冲区填满(read)。进程使用这一机制处理所有数据进出操作。

以一次传统的从硬盘中读数据为例

 

普通用户进程发起systemcall,要求其缓冲区被填满,系统调用read,向磁盘控制硬件发出命令,要求其从磁盘读取数据。磁盘控制器把数据直接写入内核内存缓冲区,这一步通过 DMA 完成,无需主 CPU 协助。一旦磁盘控制器把缓冲区装满,内核即把数据从内核空间的临时缓冲区拷贝到进程执行 read( )调用时指定的缓冲区。

网络编程基础:

IO操作除了从硬盘中读取数据文件,还可以从网络读取数据,那么就必须了解网络基础知识。

一、网络分层

 

OSI七层模型结构体: 物、数、网、传、会、表、应

TCP/IP 四层模型:数、网、传、应

我们以一个快递的心路历程来解释其中的五层,一个快递从发件到收件人收件大概经过这样几个阶段。

  1. 一个快递的运输需要丰富的交通运输网,这是基石,没有公路根本没法进行最开始的快递运输。这就是物理层,是所有信号的物理传输介质,比如光纤,没有这些传输介质信号根本无法传输。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值