目录
一. 网络编程的概念
二. 网络编程基础知识
1)网卡
2)接收端和发送端
3)客户端和服务器
4)请求和响应
5)客户端和服务器的交互模式
三. Socket 套接字模型
一. 网络编程的概念
网络编程 是通过编程实现不同进程之间数据交换和通信的技术。
- 主机1向主机2发送网络数据,主机1发送网络资源(客户端)主机2获取网络资源(服务器)
- 如果是同一个主机,只要是不同的进程,基于网络来传输数据,那么也属于网络编程
网络编程的本质就是学习传输层提供给应用层的API,通过使用这些API,将数据交给传输层,经过层层封装将数据通过网卡发送出去
二. 网络编程基础知识
1)网卡
网卡属于计算机的硬件组件,将二进制数据转换成适合传输的光电信号,并处理网络协议的底层细节
2)接收端和发送端
接收端和发送端
发送数据的一方,称为发送端
接收数据的一方,称为接收端
3)客户端和服务器
客户端和服务器
主动发起通信的一方,称为客户端
被动接受通信的一方,称为服务器
同一个程序在不同的场景中,可能是客户端也可能是服务器
4)请求和响应
客户端给服务器发送的数据,称为请求
服务端给客户端返回的响应,称为响应
5)客户端和服务器的交互模式
- 一问一答( 一个请求对应一个响应)
客户端给服务器发个请求,服务器给客户端返回个响应(网站开发)
- 一问多答 (一个请求对应多个响应)
客户端发一个请求,服务器返回多个响应(下载文件)
- 多问一答 (多个请求对应一个响应)
客户端发多个请求,服务器响应一个(上层文件)
- 多问多答(多个请求对应多个响应)
客户端发送多个请求,服务器返回多个响应(远程控制)
三. Socket 套接字模型
网络编程主要使用系统API,这些API主要是由传输层提供,传输层主要有两种协议:TCP和UDP
由于协议的不同,导致提供的API也不同
Socket套接字针对传输层协议分为了三类:
- 流套接字(使用传输层TCP协议)
- 数据报套接字(使用传输层UDP协议)
- 原始套接字
传输层主要协议:TCP和UDP协议(重点!!!)
UDP:无连接,不可靠传输,面向数据报,全双工
TCP:有链接,可靠传输,面向字节流,全双工
1)有链接/无连接
有链接
- 这里的连接并不是物理意义上的理解,而是抽象的连接
- 连接的特点是必须双方都认同,连接后才能传输数据(打电话)
- 连接的本质就是使用一些数据结构去记录对方的信息
无连接
- 不管你认不认同,数据都可以发送过去(发短信)
2) 可靠传输/不可靠传输
- 这里的可靠传输不能保证数据百分之百到达接收端
- 可靠传输:发送的数据是否送达,发送方可以感知到
3)面向字节流/面向数据报
面向字节流(TCP):网络中传输的基本单位是字节
面向数据报(UDP):网络中传输的基本单位是数据报(由一系列字节组成)
4)全双工/半双工
全双工:同一时刻,可以双向通信
半双工:同一时刻,只能单向通信
UDP数据报套接字模型
TCP流套接字模型
点赞的宝子今晚自动触发「躺赢锦鲤」buff!下一章详细介绍UDP数据报套接字编程