网络通信编程UDP/TCP

一、不同体系结构间的互联互通

  1. 通信本质:不同主机上进程间的通信。通过 IP 标识网络中的一台主机,本质上是 32 位的整型数据;通过端口号标识某个进程,本质上是 16 位的整型数据。
  2. 网络模型:主要有 C/S(客户端 / 服务器)、B/S(浏览器 / 服务器)、P2P(对等网络)三种。

二、实现编程

  1. UDP 编程(C/S 模型)

    • 特点:无连接、不可靠。
    • 客户端 :使用socket创建套接字,通过sendto等函数发送数据。
    • 服务器端 :将自己的地址公布出去,使用socket创建套接字,通过bind绑定地址,使用recvfrom接收数据。
    • recvfrom函数:从指定的套接字接收数据,并保存发送方的地址信息。成功时返回接收到的字节数,失败时返回 -1。
    • bind函数:在服务器端将套接字与指定的接口地址关联,用于从该接口接受数据;在客户端可将数据从套接字中取出并从指定接口设备上发送出去。客户端可以省略此函数,由默认接口发送数据。
  2. 基于 TCP 的编程(C/S 模型)

    • 客户端
      • 建立连接 :使用socket创建套接字(相当于买了一部手机),可选的bind操作(相当于插上 SIM 卡),然后使用connect向服务器发起连接请求(相当于拨打电话)。
      • 通信过程 :使用readwrite进行数据读写,最后使用close关闭连接。
    • 服务器端
      • 建立连接 :使用socket创建套接字,通过bind绑定地址,使用listen监听客户端的连接请求,使用accept接听客户端的连接请求(这一步完成后连接就建立好了,可以收发数据)。
      • 通信过程 :使用readwrite进行数据读写,最后使用close关闭连接。
    • TCP 建立连接(三次握手):客户端向服务器发送 "我要和你建立连接" 的请求,服务器回复 "好的,可以建立连接",客户端再回复 "好",完成三次握手建立连接。
    • 断开连接(四次挥手):客户端向服务器发送 "我要和你断开连接" 的请求,服务器回复 "好的,可以断开",服务器再发送 "我也要断开" 的请求,客户端最后回复 "好",完成四次挥手断开连接。
    • connect函数:由客户端使用,向目标主机发起连接请求。参数包括本地套接字id、远程目标主机的地址信息及地址信息长度。成功时返回 0,失败时返回 -1。

三、地址相关操作

  1. 绑定地址:主要针对服务器程序,绑定的是服务器所在电脑的 IP 地址。
  2. 查看地址 :在 Linux 下使用ifconfig命令查看网卡相关信息(包含 IP 地址);在 Windows 下在 cmd 中使用ipconfig /all命令查看。
相关推荐
KookeeyLena410 分钟前
如何搭建一个ip池用来做数据抓取用
服务器·网络·tcp/ip
DdddJMs__13518 分钟前
C语言 | Leetcode题解之第403题青蛙过河
c语言·数据结构·算法
小林熬夜学编程29 分钟前
【Linux系统编程】第二十弹---进程优先级 && 命令行参数 && 环境变量
linux·运维·服务器·c语言·开发语言·算法
网安詹姆斯37 分钟前
网络安全(黑客技术)2024年三个月自学计划
网络·数据结构·python·mysql·安全·web安全·github
六点半88843 分钟前
【C/C++】涉及string类的经典OJ编程题
c语言·开发语言·c++·算法
Spring-wind1 小时前
【linux】 ls命令
linux
爱是小小的癌1 小时前
C语言动态内存管理
c语言·开发语言
暮色_年华1 小时前
C和指针:指针
c语言
Flying_Fish_roe1 小时前
linux-安全管理-文件系统安全
linux·运维·安全
小小工匠1 小时前
Linux - 探秘/proc/sys/net/ipv4/ip_local_port_range
linux·本地端口分配范围