网络基础
TCP/IP参考模型
TCP/IP协议簇:分层的多协议的通信体系,是一个四层协议系统
网络接口层
ARP:IP——>MAC地址
RAPR:MAC——>IP
数据链路层(驱动程序)封装了物理网络的电气细节
网际层选择中间节点
IP:
ICMP:检测网络连接 (它使用IP提供的服务)
WAN(广域网)使用众多分级的路由器来连接分散的主机或LAN
网络层封装了网络连接的细节
传输层
TCP
UDP
SCTP(流控制传输协议)
传输层为应用程序提供了一条端到端的逻辑通信链路
应用层
Ping:是应用程序,不是协议,是调试网络环境的工具
telent:远程登陆协议,能使我们本地完成远程任务
OSPF:开放最短路径优先协议,是一种动态路由更新协议,用于路由器间的通信,已告知对方各自的路由信息
TCP
封装过程如下图:
IP、ARP、RARP:三种协议都使用帧传输数据(IP 0x800 ARP 0x806 RARP 0x835)
TCP、UDP、ICMP:都使用IP协议(IP的头部采用16位的协议字段来区分它们)
DNS、HTTP等应用层协议:通过TCP、UDP提供服务(TCP、IP头部中的16位端口号字段区分上层应用)
(DNS 53 HTTP 80)
ARP/RARP
ARP高速缓存:IP地址到MAC地址的映射
arp命令
$sudo arp -d IP地址 #删除IP对应的ARP缓存
$sudo arp -s IP地址 物理地址 #添加...
以太网帧
ARP请求和应答是从以太网驱动程序发出的,而并非从ARP模块直接发送到以太网上的
DNS查询和应答报文
套接字编程
字节序
PC大多数是用小端字节序,又称主机字节序
大端字节序,又称网络字节序
socket地址的数据类型
通用socket地址(之根本)
struct sockaddr{
};
专用socket地址(更细)
TCP IPV4
struct sockaddr_in{
};
unix udp
struct sockaddr_un{
};
所有专用socket地址类型de变量在实际使用都需要转化为通用socketaddr
因为所有的socket编程接口都是用的地址参数类型都是sockaddr
地址族与协议族有完全相同的值,因此二者通常混用
setsockopt函数
解决server的TCP连接没有完全断开之前不允许重新监听的问题
高级IO
pipe/socketpair
pipe用来创建管道,但是单个管道只能单向通信,一端用于读,而另一端用于写。如果要实
现进程双向通信,必须创建一对管道。而socketpair则可以用来创建双向通信的管道
dup/dup2
对输入文件描述符重定向,
select
poll
epoll
《完》