TCP/IP网络编程(一)
1.网络分层
- 网络接口层:包含物理层和数据链路层,简单来讲,提供数据传输的物理介质并提供可靠的数据传输(网卡,MAC)。
- 网络层:网络层将数据包进行分组并发往目的主机或网络(IP)。
- 传输层:提供源主机和目的主机可以进行会话的机制(TCP,UDP)。
- 应用层:基于TCP和UDP协议实现的应用,例如FTP,DNS,HTTP等。
2.相关概念
- MAC:数据链路层,将数据封装成帧,物理地址寻址,数据的检测重发等。
- PHY:物理层的芯片简称为PHY芯片,MAC通过MII接口来与PHY通信。当从外部接收到数据时,将模拟信号转换为数字信号,解码后通过MII给到MAC;当有数据需要发送时,MAC通过MII将数据给PHY,数据经过编码等处理转换成模拟信号发送出去。
- MTU:数据段长度最大值,即最大传输单元。如果IP层数据长度比MTU大,在IP层数据要进行分片,是的每个片都小于MTU。
- ARP:ARP协议是为IP地址到MAC地址提供动态的映射关系。
- 子网掩码:32位字段的数值,利用此字段来屏蔽原来网络地址的划分情况。不单独出现,配合IP地址使用。
- 端口:端口是相对于TCP/UDP而言的,一个16位的整数类型值。应用程序需要对某个端口进行绑定,这样客户端可以访问主机上的此端口来与应用进行通信。好比IP地址是家里的门牌地址,而端口号是每个房间的标识,当你要去做饭时会去厨房,当你要去睡觉觉时会去卧室。端口号的值可以由用户自定或者由操作系统分配。例如HTTP的端口号默认为80,FTP的端口号默认为20和21,IEC104的端口默认为2404等。
- 字节序:主机字节序和网络字节序。常见的字节序为小端字节序和大端字节序,网络字节序为大端字节序。字节序详解可见此文章:https://blog.csdn.net/leexiaomi6618/article/details/89441182
3.TCP网络编程架构(C/S)
- TCP网络编程架构为C/S架构,即Client客户端和Server服务器。服务器创建服务程序等待客户端的连接,解析客户端的请求并给予响应;客户端连接服务器的IP和端口,向服务器发送请求并处理服务器的响应数据。
- TCP_Server相关流程:初始化套接字socket -> 绑定端口 -> 监听连接 -> 接受客户端连接 -> 接受/发送数据 -> 关闭套接字。
- TCP_Client相关流程:初始化套接字socket -> 连接服务器 -> 发送/接收数据 -> 关闭套接字。