TCP/IP网络编程理解

网络协议采用的是 "TCP/IP协议族" :TCP/IP协议的分层:/** 软件分层 **/
5>"应用层":Telnet、FTP和e-mail等
4>"传输层":TCP和UDP TCP段
3>"网络层":IP、ICMP和IGMP ip数据报
2>"链路层":设备驱动程序及接口卡 以太网帧
1>"物理层":规定了电气协议

socket、(逻辑地址)IP、端口、(物理地址)MAC:

socket: 建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口.

(逻辑地址)IP:在internet中每台计算机都有其唯一的一个IP地址(逻辑的)

端口每个IP相当于一个与网络连接的电脑,而端口相当于这个电脑上的某个网络应用程序。

(物理地址)MAC逻辑地址/网络地址("IP地址")、物理地址("MAC地址")
每一块网卡都有自己的身份证号,即物理MAC地址(目的地址 - 6 个字节)
网络通信中最终认识的就是此MAC地址。 实现IP与MAC 的绑定。

ARP 地址解析协议,把ipv4地址映射到硬件地址
RARP 反向地址解析协议,把硬件地址映射到ipv4地址

域名-----DNS服务解析成ip

每种网络的协议都是一种数据沟通的规则。

1. 基于TCP的"服务器端编程模型"
<1> 创建socket通讯端(socket) -> 初始化服务器(sockaddr_in成员)
<2> 将通讯端和服务器ip地址和端口号绑定(bind)
<3> 监听通讯端(listen)
<4> 等待客户端连接的到来,返回一个连接描述符(accept)
<5> 从连接描述符中读写数据(read/write)
<6> 对数据进行加工
<7> 关闭socket通讯端-连接描述符(close(参数);)
/** 整体是框架,用户自定的地方主要是<5><6>对数据的读写和处理 **/


2. 基于TCP的"客户端编程模型"
<1> 创建socket通讯端(socket) -> 初始化服务器(sockaddr_in成员)
<2> (inet_pton转换)-> 使用socket通讯端连接服务器
<3> 连接成功,通过socket通讯端向服务器发送数据,或从服务器获取数据
<4> 处理数据
<5> 关闭socket通讯端-连接描述符
/** 整体是框架,用户自定的地方主要是<4>对数据的读写和处理 **/
 

猜你喜欢

转载自blog.csdn.net/yizimu/article/details/81112910