网络编程的基础知识

客户端程序和服务端程序

网络程序和普通的程序的最大区别在于,网络程序由两个部分组成:客户端程序服务器程序

  • 客户端程序:主动发起连接请求
  • 服务器程序:监听端口,等待并响应客户端的连接请求(被动监听并响应)

所以要先有服务器程序启动,等待客户端程序运行并向服务器端口发起连接

客户端和服务器建立连接后,双方通过数据通道进行通信

【拓展】客户端与服务端可以位于同一台主机上,也可以分别部署在不同的设备甚至不同地区

IP地址与端口

IP地址

网络上的每台计算机都必须有一个唯一的IP地址作为标识符(如IPv4格式192.168.1.1,IPv6格式2001:0db8::1

端口

网络通信中,它不是物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口,通过端口号可以找到一台设备上唯一的一个程序

端口号范围: 0 - 65535

分类

  • 公共端口(0-1023):系统或知名服务占用

    常见端口:ftp:23,smtp:25,http:80,https:443

  • 动态端口(1024-65535):临时分配给应用程序,进程结束后释放


当需要和某台计算机建立连接,知道IP地址或域名即可
当需要和该计算机上的某个程序通信时,还必须知道该程序使用的端口号

TCP与UDP协议

传输控制协议(TCP)

TCP提供的是面向连接、可靠的字节流服务

当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据

TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端

用户数据报协议(UDP)

UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不保证它们能到达目的地

由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快

TCP vs. UDP

特性TCPUDP
连接方式面向连接(需三次握手建立连接)无连接
可靠性可靠(重传、校验、流量控制)不可靠(可能丢包、无序)
速度较慢(因可靠性机制)较快(无额外控制开销)
适用场景文件传输、网页浏览、电子邮件视频流、实时游戏、DNS查询

套接字(Socket)

定义:在TCP/IP通信协议中,套接字就是IP地址与端口号的组合,是网络通信的编程接口

对于网络应用程序而言,Socket是进程间(远程)通信的一种机制

套接字的类型

int s = socket(PF_INET, Socket type, Protocol);
类型基于用法
字节流套接字(Stream Socket)TCP,提供可靠字节流传输socket(PF_INET, SOCK_STREAM, 0)
数据报套接字(Datagram Socket)UDP,提供不可靠的报文传输socket(PF_INET, SOCK_DGRAM, 0)
原始套接字(Raw Socket)IP,允许用户直接对IP操作socket(PF_INET, SOCK_RAW, protocol)

【补充】

  • PF_INET 表示 IPv4 协议族
  • SOCK_STREAMSOCK_DGRAM 分别用于 TCP 和 UDP
  • 原始套接字通常需要管理员权限,用于协议分析、安全检测等领域
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值