首页 > 其他分享 >TCP通信实现两个主机之间的信息交互

TCP通信实现两个主机之间的信息交互

时间:2022-12-01 20:34:15浏览次数:39  
标签:socket 主机 通信 TCP 交互 连接 服务端 客户端

TCP通信概述

TCP协议用来控制两个网络设备之间的点对点通信,两端设备按作用分为客户端和服务端。服务端为客户端提供服务,通常等待客户端的请求信息,有客户端请求到达之后,及时提供服务和返回响应消息;客户端向服务端主动发出请求,并接受响应消息。

    首先启动服务端程序,并开始等待网络中的客户请求,然后客户端主动向服务端发出连接请求,服务端接收到客户端的连接请求后,并和客户端之间建立一个稳定的TCP/IP通信连接。
    现在客户端将向服务端主动发出请求,服务端接收客户端消息,并及时返回响应消息。这是通过IO流(字节流)实现的。
    通信完成后,由客户端主动关闭和服务端之间的连接;如果客户端未主动关闭和服务端之间的连接,服务端在等待指定的时间后将关闭这个连接。

TCP的特点

    TCP是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个有顺序且无差错的数据流。
    因为TCP通信两端的行为是不同的,所以在客户端使用socket类实现通信,而服务器使用ServerSocket实现通信。
    网络通信不是必须有两个物理主机,而是需要有两个不同的socket就可以通信,例如,在同一主机上IP地址是相同的,但是使用不同的端口创建不同的socket,这样的两个socket之间也是可以实现TCP/IP的通信。





TCP通信的实现原理

 

无论一个TCP通信程序的功能多么齐全,程序多么复杂,其基本结构都是一样的,都包括以下四个基本步骤:

    在服务端指定一个端口号来创建serverSocket,并使用accept方法进行侦听,这将阻塞服务器线程,等待用户请求。
    在客户端指定服务的主机IP和端口号来创建socket,并连接服务端serverSocket,此时服务端accept方法被唤醒,同时返回一个和客户端通信的socket。
    在客户端和服务端分别使用socket来获取网络通信输入/输出流,并按照一定的通信协议对socket进行读/写操作。
    通信完成后,在客户端和服务端中分别关闭socket。
————————————————
原文链接:https://blog.csdn.net/huixiaodezuotian/article/details/121797825

 

 

更为详细的解释和应用

 一、TCP、UDP间的关系

TCP 和 UDP -> 传输层的协议:

UDP:用户数据报协议,面向无连接,可以单播,多播,广播, 面向数据报,不可靠

TCP:传输控制协议,面向连接的,可靠的,基于字节流,仅支持单播传输

                                                UDP                                                 TCP

是否创建连接                         无连接                                           面向连接

是否可靠                                不可靠                                             可靠的

连接的对象个数       一对一、一对多、多对一、多对多            支持一对一

传输的方式                         面向数据报                                     面向字节流

首部开销                               8个字节                                      最少20个字节

适用场景                 实时应用(视频会议,直播)         可靠性高的应用(文件传输)
二、TCP通信的流程
1、服务器端(被动接收连接的角色)

(1)创建一个用于监听的套接字

        - 监听:监听有客户端的连接

        - 套接字:这个套接字其实就是一个文件描述符

(2)将这个监听文件描述符和本地的IP和端口绑定(IP和端口就是服务器的地址信息)

        - 客户端连接服务器的时候使用的就是这个IP和端口

(3)设置监听,监听的fd开始工作

(4) 阻塞等待,当有客户端发起连接,解除阻塞,接受客户端的连接,会得到一个和客户端通信的套接字(fd)

(5)通信

        - 接收数据

        - 发送数据

(6)通信结束,断开连接
2、客户端

(1)创建一个用于通信的套接字(fd)

(2)连接服务器,需要指定连接的服务器的 IP 和 端口

(3)连接成功了,客户端可以直接和服务器通信

        - 接收数据

        - 发送数据

(4) 通信结束,断开连接
3、TCP通信流程图
————————————————
版权声明:本文为CSDN博主「一米九零小胖子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_47156401/article/details/125884879

标签:socket,主机,通信,TCP,交互,连接,服务端,客户端
From: https://www.cnblogs.com/geraldg/p/16942596.html

相关文章

  • 使用批处理扫描局域网内存活的主机的脚本
    1、先在电脑任意位置下新建一个txt的文本,然后命名为“扫描局域网内存活的主机.bat”的bat文件。  2、右键该文件,选择"编辑",把以下内容复制进去,最后保存。 @echooff......
  • Linux中,Tomcat 怎么承载高并发(深入Tcp参数 backlog)
    转自:https://www.cnblogs.com/grey-wolf/p/10999342.html 一、前言#这两天看tomcat,查阅tomcat怎么承载高并发时,看到了backlog参数。我们知道,服务器端一般使用mq来减......
  • 如果容器,只能访问指定的主机,除了iptables,还有其他办法,有没有安全的隐患?
    k8scalico的网络策略似乎可以实现。 2.控制workloadendpoints到host的默认行为获取要编辑的对象calicoctlgetfelixconfigurationdefault--export-oyam......
  • TCP的三次握手 四次挥手
    为什么是三次握手确认通信能力我们要明白,如果需要进行通信,首先需要保证的是双方都具有发信和收信能力。在不知双方能力状态下进行的通信都是无法保证可靠性和通信效率的......
  • 用户交互Scanner的应用
    用户交互Scanner的应用可以通过用Scanner类来获取用户的输入基本语法:Scannerscanner=newScanner(System.in);通过Scanner类的next()与nextLine()方法来获取输入的字......
  • 优豆云”"免费虚拟主机"“免费云服务器”
    优豆云”"免费虚拟主机"“免费云服务器”非常棒非常好用,而且免费的哟!https://www.udouyun.com 优豆云https://www.udouyun.com高防云服务器最低100,高防物理机最低399 ......
  • TCP协议
    TCP协议特点使用TCP协议,必须双方先建立连接,它是一种面向连接的可靠通信协议。传输前,采用“三次握手”方式建立连接,所以是可靠的。在连接中可进行大数据量的传输。连接、......
  • 计算机网络原理(TCP/IP协议五):Internet协议
    IPv4和IPv6头部IPv6扩展头部IP转发移动IPIP数据报的主机处理 一、IPv4和IPv6头部IP是TCP/IP协议族中的核心协议,所有TCP、UDP、ICMP、IGMP数据都通过IP数据报传输......
  • 动图图解 | UDP就一定比TCP快吗?
    学习&转载文章:"动图图解|UDP就一定比TCP快吗?"UDP比TCP快吗?相信就算不是八股文老手,也会下意识的脱口而出:"是"。这要追问为什么,估计大家也能说出个大概。但这也让人......
  • nodejs 服务器监听的主机名称导致的本地前端代理错误
    问题前端本地开发服务器一直是正常的,直到某一天启动时出现这个错误:代理服务的配置如下:(http://localhost:8000跑着一个本地启动的nodejs服务器。)const{createProxyMid......