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

posted @ 2022-12-01 20:21  GeraldG  阅读(576)  评论(0编辑  收藏  举报