一 网络基础知识
1 OSI七层协议模型
人和计算机之间交互分了7层(OSI 7层模型):物理层、数据链路层、网络层、传输层、会话层、表现层、应用层。
TCP/IP协议模型中,把应用、表现层和会话层合并为一个大应用层。
2 常见协议
HTTP,FTP,TCP,IP,UDP,收发email的协议
HTTP — 超文本传输协议(互联网)
FTP — 文件传输协议(上传和下载)
TCP — 传输控制协议(一般不翻译)
UDP — 用户数据报协议
IP — Internet协议
把一组相关的协议,叫做协议簇(族)。比如:TCP/IP
3 IP地址、子网掩码、端口
3.1 IP地址
IP地址就是计算机在网络中的地址,用4字节/6字节的整数表示,4字节的IPV4,6字节的IPV6。
IP地址 有两种常用的表示方法:
1.计算机底层是支持8位十六进制的32位整数(32位二进制)。
2.人更喜欢点分十进制表示方法,每个字节转成十进制,中间用.隔开, 叫做点分十进制192.168.1.1
两种表示方法底层其实是一样的,比如:
点分十进制 172.40.0.10
用十六进制可以写成 0xAC28000A
192.168.100.20 -> 0xC0A86414
查看IP地址的命令:
Windows用 ipconfig
Unix/Linux用 /sbin/ifconfig
IP地址又分四级:
a类 0
b类 10
c类 110
d类 1110
IP地址在网络中可以定位一台计算机。每个网卡在出厂时都有唯一的网卡地址,也叫mac地址(物理地址),IP地址其实是对应网卡地址然后定位计算机。但IP地址和MAC的绑定是 不固定的。
3.2 子网掩码
子网掩码,主要用于判断是否一个网段。
比如:
IP地址: 166.111.160.1 与 166.111.161.45
子网掩码: 255.255.254.0
IP地址位与子网掩码,如果结果一样,就是同一网段。
166.111.160.1 & 255.255.254.0 = 166.111.160.0
166.111.161.45 & 255.255.254.0 = 166.111.160.0
3.3 端口
IP地址虽然可以找到计算机,但计算机如果不授权给你,你无法进行任何的操作。计算机用 端口 代表本机的某个进程,访问本机进程必须通过端口进行。
端口是16位的二进制的整数 0 — 65535,其中:
0-1023 基本不用,被系统松散的占用了,比如:
80 HTTP的端口(可以改)
21 FTP端口 23 TELNET端口
1024 — 48000+ 可用端口,某些软件安装后会占用某些特定端口,比如:
1521 Oracle的监听端口
8080 Oracle的Http Server
7001 weblogic服务器占用的端口(Java 服务器)
……
48000+ —– 65535 不稳定端口,随时可能被系统拿去做临时的端口
二 socket网络编程
网络编程就是用IP地址定位计算机,用端口定位对应的进程。
socket 本意就是插座,翻译成套接字。网络编程就是socket编程。
网络编程发展到现在,涵盖的内容已经非常完善,c提供了比较完整的函数和变量支持。
网络通信包括 一对一(点对点), 一对多。一对一分为本地通信(IPC)和网络通信。本地通信(两个本地进程) 使用 socket文件做交互媒介,后缀是 .sock,类型为s
整数在存储时,本机有两种