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、SMTPUDP协议
:
用于不同主机的进程之间的通信。是一种面向无连接的传输层协议,不支持排序、检错、失败重传。主要服务于“查询-应答”的服务,如: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.0B类地址
:默认16bit子网ID,前两位为10 城域网
(城市-城市)
10xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx/255.255.0.0C类地址
:默认24bit子网ID,前三位为110 局域网
110x xxxx xxxx xxxx xxxx xxxx xxxx xxxx/255.255.255.0D类地址
:前四位为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.数据在各层的组包、解包
10.server工作过程
打开一个通信通道告诉主机,在某一个端口(80)等待客户机的请求
接收客户的请求,并发送应答信号,**一个新的线程处理这个客户请求
服务完成后,关闭新线程与客户的通信链路
11.client工作过程
打开一个通信信道连接到服务器特定端口
向服务器发出服务请求,等待并接收应答
根据需要继续提出请求
请求结束后关闭通信信道