美文网首页
进程和线程的区别及通信方式(TCP三次握手四次挥手)

进程和线程的区别及通信方式(TCP三次握手四次挥手)

作者: Time_x | 来源:发表于2019-06-19 23:24 被阅读0次

1、进程和线程的区别:

答:线程是指进程内的一个执行单元,也是进程内的可调度实体。与进程的区别:

(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。

(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行。

(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.

(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

2、进程间通讯的方式有哪些,各有什么优缺点:

1)管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程之间使用。进程的亲缘关系通常是指父子进程关系。

2)有名管道(FIFO):有名管道也是半双工的通信方式,但是允许在没有亲缘关系的进程之间使用,管道是先进先出的通信方式。

3)信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

4)消息队列:消息队列是有消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

5)信号 ( sinal ) :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

6)共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

7)套接字( socket ) :套接字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

3、tcp连接建立的时候3次握手的具体过程,以及每一步原因:

(1)    第一步:源主机A的TCP向主机B发出连接请求报文段,其首部中的SYN(同步)标志位应置为1,表示想与目标主机B进行通信,并发送一个同步序列号X(例:SEQ=100)进行同步,表明在后面传送数据时的第一个数据字节的序号是X+1(即101)。SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号。

(2)  第二步:目标主机B的TCP收到连接请求报文段后,如同意,则发回确认。在确认报中应将ACK位和SYN位置1,表示客户端的请求被接受。确认号应为X+1(图中为101),同时也为自己选择一个序号Y。

(3)  第三步:源主机A的TCP收到目标主机B的确认后要向目标主机B给出确认,其ACK置1,确认号为Y+1,而自己的序号为X+1。TCP的标准规定,SYN置1的报文段要消耗掉一个序号。

运行客户进程的源主机A的TCP通知上层应用进程,连接已经建立。当源主机A向目标主机B发送第一个数据报文段时,其序号仍为X+1,因为前一个确认报文段并不消耗序号。

当运行服务进程的目标主机B的TCP收到源主机A的确认后,也通知其上层应用进程,连接已经建立。至此建立了一个全双工的连接。

4、tcp断开连接的具体过程,其中每一步是为什么那么做:

1)第一步:源主机A的应用进程先向其TCP发出连接释放请求,并且不再发送数据。TCP通知对方要释放从A到B这个方向的连接,将发往主机B的TCP报文段首部的终止比特FIN置1,其序号X等于前面已传送过的数据的最后一个字节的序号加1。

2)第二步:目标主机B的TCP收到释放连接通知后即发出确认,其序号为Y,确认号为X+1,同时通知高层应用进程,这样,从A到B的连接就释放了,连接处于半关闭状态,相当于主机A向主机B说:“我已经没有数据要发送了。但如果还发送数据,我仍接收。”此后,主机B不再接收主机A发来的数据。但若主机B还有一些数据要发送主机A,则可以继续发送。主机A只要正确收到数据,仍应向主机B发送确认。

3)第三步:若主机B不再向主机A发送数据,其应用进程就通知TCP释放连接。主机B发出的连接释放报文段必须将终止比特FIN和确认比特ACK置1,并使其序号仍为Y,但还必须重复上次已发送过的ACK=X+1。

4) 第四步:主机A必须对此发出确认,将ACK置1,ACK=Y+1,而自己的序号是X+1。这样才把从B到A的反方向的连接释放掉。主机A的TCP再向其应用进程报告,整个连接已经全部释放。

5、tcp建立连接和断开连接的各种过程中的状态转换细节:

客户端:主动打开SYN_SENT--->ESTABLISHED--->主动关闭FIN_WAIT_1--->FIN_WAIT_2--->TIME_WAIT

服务器端:LISTEN(被动打开)--->SYN_RCVD--->ESTABLISHED--->CLOSE_WAIT(被动关闭)--->LAST_ACK--->CLOSED

相关文章

  • 360搜索服务端-C++面经(一面+二面)

    来自牛客网 一面 自我介绍 TCP三次握手四次挥手 指针和引用的区别 进程与线程的区别 进程的通信 树和hash表...

  • 【计算机网络】TCP三次握手与四次挥手

    此篇文章转自TCP和UDP的区别TCP三次握手、四次挥手及状态转换详解 建立连接协议(三次握手): 第一次握手:客...

  • 网络编程10_图解TCP连接中的3次握手和4次挥手

    TCP三次握手,四次挥手 什么是“三次握手,四次挥手”? TCP 是一种面向连接的单播协议,在发送数据前,通信双方...

  • 图解TCP:三次握手,四次挥手

    TCP三次握手,四次挥手 什么是“三次握手,四次挥手”? TCP 是一种面向连接的单播协议,在发送数据前,通信双方...

  • 不积跬步--TCP三次握手和四次挥手过程

    本文来至转载TCP三次握手和四次挥手过程 TCP三次握手和四次挥手过程 1、三次握手 (1)三次握手的详述 首先C...

  • 网络相关面试题

    网络 1. TCP和UDP的区别 2. TCP的三次握手 3. TCP的四次挥手 4. TCP为什么需要三次握手...

  • 网络通信

    Tcp通信原理了解吗? Tcp连接需要进行三次握手,断开需要四次挥手。 为什么TCP连接需要三次握手分开需要四次握...

  • TCP的三次握手和四次挥手

    参考资料:[1].【TCP】详解TCP 三次握手和四次挥手[2]. iOS:为什么TCP连接要三次握手,四次挥手[...

  • TCP/IP基础

    1.网络分层及对应的协议 3.TCP协议的三次握手及四次挥手三次握手及四次挥手的简图如下: 三次握手的过程: 第三...

  • Java程序员面试知识大纲

    基础算法 排序 查找 操作系统和常用协议 进程、线程、协程 编译原理 TCP 协议三次握手四次挥手确认机制、滑动窗...

网友评论

      本文标题:进程和线程的区别及通信方式(TCP三次握手四次挥手)

      本文链接:https://www.haomeiwen.com/subject/jwcrqctx.html