并行并发
# 并行并发
并发并行:操作系统切换 同步异步:同一个线程中io操作结果是否立即返回(不管返回有没有结果)
1.同步和异步
同步和异步关注的是消息通信机制
所谓同步,就是在发出一个调用时,没得到结果之前,该调用就不返回。但是一旦调用返回就得到返回值了,调用者主动等待这个调用的结果
所谓异步,就是在发出一个调用时,这个调用就直接返回了,不管返回有没有结果。当一个异步过程调用发出后,被调用者通过状态,来通知调用者,或者通过回调函数处理这个调用
2.阻塞和非阻塞
阻塞和非阻塞关注的是程序在等待调用结果时的状态
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才返回
非阻塞调用是指在不能立即得到结果之前,该调用不会阻塞当前线程
网络IO的模型大致包括下面几种
同步模型(synchronous IO) 阻塞IO(bloking IO) 非阻塞IO(non-blocking IO) 多路复用IO(multiplexing IO) 信号驱动式IO(signal-driven IO) 异步模型(asynchronous IO) 异步IO
#端口号 举例来说,有主机A需要对外提供FTP和WWW两种服务,如果没有端口号存在的 话,这两种服务是无法区分的。实际上,当网络上某主机B需要访问A的FTP服务时,就要指定目的端口号为21;当需要访问A的WWW服务时,则需要将目的 端口号设为80,这时A根据B访问的端口号,就可以区分B的两种不同请求。这就是端口号区分服务类别的作用。
再举个例子:主机A需要同时下载网络上某FTP服务器B上的两个文件,那么A需要 与B同时建立两个会话,而这两个传输会话就是靠源端口号来区分的。在这种情况下如果没有源端口号的概念,那么A就无法区分B传回的数据究竟是属于哪个会话,属于哪个文件。而实际上的通信过程是,A使用本机的1025号端口请求B的21号端口上的文件1,同时又使用1026号端口请求文件2。对于返回的数 据,发现是传回给1025号端口的,就认为是属于文件1;传回给1026号端口的,则认为是属于文件2。这就是端口号区分多个会话的作用。