首页 > 编程语言 >TCP编程

TCP编程

时间:2023-10-06 09:33:22浏览次数:35  
标签:Socket 编程 应用程序 TCP 连接 端口号 客户端

一、端口号

  用于在网络通信中标识特定应用程序或服务的数字,在网络通信时发送方和接收方都需要使用相同的端口号,以便彼此识别和连接,计算机将传入的数据包转发到正确的应用程序或服务,实现精确的网络通信。

  在TCP/IP协议中是一个16位的无符号整数,范围从0到65535。

  端口号分为三个范围:

    熟知端口(Well-known Ports):一般由标准化组织(如IANA)指定,端口号范围从0到1023,被预留用于一些通用或广泛使用的服务,如HTTP使用的端口号是80,HTTPS使用的端口号是443,SMTP使用的端口号是25等。

    注册端口(Registered Ports):通常经过IANA注册避免冲突,可由开发者或组织自行分配,用于一些特定的应用程序或服务,端口号范围从1024到49151。

    动态/私有端口(Dynamic/Private Ports):在应用程序或服务启动时从操作系统的可用端口号池中动态分配,以避免与其他应用程序的端口号冲突,用于临时分配给客户端应用程序或其他服务,端口号范围从49152到65535。

   在网络通信中,同一个IP地址下的不同端口号可以同时使用,但不同IP地址之间的端口号是互不相关的。每个端口号在特定的IP地址上是唯一的,用于标识不同的应用程序或服务。当一个应用程序或服务使用了特定的IP地址和端口号,其他应用程序或服务就不能再使用相同的IP地址和端口号。

 

二、Socket(套接字)

  一种在计算机网络中进行通信的编程接口,在应用层和传输层之间建立一个接口,使得应用程序可以通过传输层协议(如TCP或UDP)进行网络发送和接收数据,本质是实现不同计算机上的两个进程之间的数据传输。

  使用Socket进行网络通信的基本步骤如下:

    1. 创建Socket:在服务端的应用程序中创建一个Socket对象,指定协议类型(如TCP或UDP)和端口号。

    2. 绑定地址:将Socket对象绑定到本地的IP地址和端口号上,以便监听来自客户端的其他计算机的连接请求。

    3. 监听连接:开始监听指定的端口,等待客户端的连接请求。

    4. 接受连接:当有客户端的连接请求到达时,服务端接受连接并创建一个新的Socket对象,用于与客户端进行通信,这里是TCP的第一次握手,服务端收到了客户端的SYN报文段后,会发送一个SYN-ACK报文段给客户端,表示接收到了连接请求并且准备建立连接。
    5. 发送和接收数据:

      客户端收到服务端的SYN-ACK报文段后,通过Socket对象发送一个确认报文段(ACK)告知服务端,客户端已经收到了服务端的确认,并且准备好建立连接,这里是TCP的第二次握手。

      服务端收到客户端的确认ACK报文段后,发送的ACK报文段告知客户端,连接建立成功,这是TCP的第三次握手,然后双方可以开始进行数据的传输和通信。

    6. 关闭连接:当通信结束后,关闭Socket连接,释放资源。

标签:Socket,编程,应用程序,TCP,连接,端口号,客户端
From: https://www.cnblogs.com/sTruth/p/17744252.html

相关文章

  • Learning Hard C# 学习笔记: 5.C#中的面向对象编程
    目前除C#外流行的面向对象编程的几个语言分别是:Java,C++等;面向对象的语言都具有以下特征:封装-将客观事物封装成类,并将类内部的实现隐藏,以保证数据的完整性;继承-子类通过继承可以复用父类的代码;多态-允许将子对象赋值给父对象的一种能力.5.1封装封装指的是......
  • 网络编程基础知识
    一、计算机网络由2台或更多计算机组成的网络。在同一个计算机网络下,不同的计算机可以直接进行通信,是因为:不同的计算机具有相同的网络号:会被认为在同一个计算机网络下,网络号是IP地址通过子网掩码过滤后得到的(IP是101.202.99.2,子网掩码是255.255.255.0,网络号是10......
  • Unix/Linux系统编程第七八章
    第七章文件操作7.1文件操作级别文件操作分为五个级别(1)硬件级别:fdisk:将硬盘、U盘或SDC盘分区。mkfs:格式化磁盘分区,为系统做好准备。fsck:检查和维修系统。碎片整理:压缩文件系统中的文件。(2)操作系统内核中的文件系统函数:每个操作系统内核均可为基本文件操作提......
  • 小目标2:编写一个基本的TCP客户端程序
    小目标2:编写一个基本的TCP客户端程序头文件 #include<cstdio>//C语言标准库 #include<unistd.h>//Unix标准库 #include<arpa/inet.h>//包含了与网络编程相关的函数和结构体的声明。它定义了用于IP地址和端口转换的函数 #include<string.h>//字符串操作的库,后面有用到mems......
  • 实验1_c语言输入输出和简单程序应用编程
    实验一1-1#include<stdio.h>intmain(){printf("O\n");printf("<H>\n");printf("II\n");printf("O\n");printf("<H>\n");printf("II\n");......
  • PowerBuilder编程新思维10.5:外传2(PowerPlume下一代开发解决方案)
    万里归来年愈少 PowerBuilder编程新思维10.5:外传2(PowerPlume下一代解决方案) 前言今天我们就来盘点一下,PB下一代开发的所有技术可能性。所谓下一代开发技术,就是指脱离或半脱离PBVM的应用开发技术,主要指后端。 后端技术汇总  前端PB+JSON前端PB+BLOBWEB后端P......
  • 小目标1:编写一个基本的TCP服务器程序
    小目标1:编写一个基本的TCP服务器程序头文件1#include<cstdio>//C++标准库的头文件2#include<unistd.h>//Unix标准头文件3#include<sys/types.h>//这个头文件定义了各种系统相关的数据类型4#include<sys/socket.h>//这个头文件用于网络编程,包含了与套接字(socket)相关......
  • 实测 亚马逊 AI 编程助手 Amazon CodeWhisperer(全网最全)
    文章作者:疯狂的驸马一、CodeWhisperer简介CodeWhisperer是亚⻢逊出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。在编写代码时,它会自动根据我们现有的代码和注释生成建议。从单行代码建议到完整的函数,它可为我们提供各种大小和范围的个性化建议。亚马逊云科......
  • PowerBuilder现代编程方法X11:PB程序完全跨平台方案
     PB可能要支持Windows、macOS、Linux、iOS、Android与鸿蒙操作系统和X86、ARM、RISC-V与国产龙芯CPU的原生应用了! PowerBuilder现代编程方法X11:PB程序完全跨平台方案 前言《PowerBuilder编程新思维》在写到了WebUI后,陷入了沉寂。原因是我对PB发展的下一代技术方案不太满......
  • Linux网络编程
    http请求主要是客户端B/S都是http协议,一种数据包格式服务器端做出响应 get请求不用提交数据,post需要请求行分为三部分 请求方式get是静态资源请求,这个刚代表资源目录,随便那个目录,而不是服务器的根目录第三个是协议版本,现在一般都是1.1版本看不见的?R/n一定要注意get......