Linux网络编程概述

网络编程概述

1.分组交换:对IP报文进行分组,每组包含一个首部,记录分组编号和目的主机地址信息。
分组编号用来进行数据的重组
主机信息用来进行数据的传输

2.交换方式:存储-转发
分组独立地寻址进行路由的跳跃,在目的地址进行最终的重组。

3.网络的四层结构:TCP/IP 协议
应用层:应用层的协议:FTP、Telnet、HTTP协议
传输层:进程与进程之间通信(端口信息),TCP、UDP协议
网络层:主机与主机之间进行通信(IP地址) IP、ICMP协议
链路层:设备到设备之间进行通信,收发的完整的帧数据(mac地址)、 ARP、RARP协议

4.网络的七层结构:理论协议
应用层:应用层的协议APP
表示层:将计算机能识别的二进制 转换成 人能识别的数据
会话层:分析数据的通信状态
传输层:进程和进程间的通信(端口信息)
网络层:主机与主机之间的通行(IP地址)
数据链路层:收发的完整的帧数据(mac地址)
物理层:不是物理设备,而是物理设备上的接口类型、电流强弱

5.协议介绍
TCP协议
用于不同主机的进程之间的通信。是一种面向连接、可靠的运输层协议,支持排序、检错、失败重传。主要服务于需要高度可靠的服务,如HTTP、FTP、SMTP
UDP协议
用于不同主机的进程之间的通信。是一种面向无连接的传输层协议,不支持排序、检错、失败重传。主要服务于“查询-应答”的服务,如:NFS、NTP、DNS

6.地址介绍
MAC地址,理论上唯一标识硬件设备地址,以太网的MAC地址是一个48bit的值
IP(v4)地址,32位,由网络ID+主机ID组成。子网ID:IP地址中子网掩码1覆盖的连续位;主机ID,IP地址中子网掩码0覆盖的连续位。子网ID用来标识网段,主机ID用来标识主机。子网ID不同的IP属于不同网段,不能直接通信,需要路由器进行转发。主机ID全为0的地址为网段地址,主机ID全为1的地址为广播地址。

7.IP地址分类(为了更加合理地利用IP地址)
A类地址:默认8bit子网ID,第一位为0, 广域网(国家-国家,大城市-大城市)
0xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx/255.0.0.0
B类地址:默认16bit子网ID,前两位为10 城域网(城市-城市)
10xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx/255.255.0.0
C类地址:默认24bit子网ID,前三位为110 局域网
110x xxxx xxxx xxxx xxxx xxxx xxxx xxxx/255.255.255.0
D类地址:前四位为1110,多播地址
E类地址: 前五位为11110,保留为今后使用

公有IP(可直接连接Internet),经由InterNIC所统一规划的IP
私有IP(不可直接连接Internet ),主要用于局域网络内的主机联机规划

回环地址:127.0.0.1
主要是测试本机的网络配置,能ping通127.0.0.1说明本机的网卡和IP协议安装都没有问题

8.端口
端口用来标识主机上运行的网络程序,不同的端口用端口号(无符号短整型)来表示。同一个端口只能对应一个网络进程,一个网络进程可以拥有多个进程号。TCP、UDP维护不同的端口。端口分为知名端口(1-1023)和动态端口(1024-65535)

9.数据在各层的组包、解包
Linux网络编程概述

10.server工作过程
打开一个通信通道告诉主机,在某一个端口(80)等待客户机的请求
接收客户的请求,并发送应答信号,**一个新的线程处理这个客户请求
服务完成后,关闭新线程与客户的通信链路

11.client工作过程
打开一个通信信道连接到服务器特定端口
向服务器发出服务请求,等待并接收应答
根据需要继续提出请求
请求结束后关闭通信信道