计算机网络体系结构
OSI 七层模型
参考模型 | 解释 |
---|
应用层 | 为应用程序提供服务 | 表示层 | 数据格式转化、数据加密 | 会话层 | 建立、维护和管理会话 | 传输层 | 建立、管理和维护端到端的连接 | 网络层 | IP选址及路由选择 | 数据链路层 | 提供介质访问和链路管理 | 物理层 | 物理层 |
TCP/IP 五层模型
TCP/IP的五层模型将OSI七层模型的上三层(应用层、表示层、会话层)统称为应用层。
参考模型 | 解释 | 常用协议 |
---|
应用层 | 为应用程序提供服务 | HTTP Telnet FTP TFTP DNS SMTP | 传输层 | 建立、管理和维护端到端的连接 | TCP UDP | 网络层 | IP选址及路由选择 | IP ICMP IGMP | 数据链路层 | 提供介质访问和链路管理 | ARP RARP IEEEE802.3 PPP CSMA/CD | 物理层 | 物理层 | … |
TCP:面向连接的,可靠的流协议。广泛的应用于各种互联网应用中。 UDP:面向无连接的通讯协议。主要应用于直播、即时通讯等领域。
数据如何通过网络5层模型传输的
张三在网络上对李四发送了一个“hello”,数据传输过程大体如下: 数据在发送的过程中,每经过一层,就会被加上一个首部。通过物理层将信息传递给目标机器后,再逐层解包,最后李四就收到了消息。
IP地址与MAC地址
我们可以通过下面的表格来比较ip地址和mac地址
分类 | ip地址 | mac地址 |
---|
外观 | 192.168.31.13 | 0E:B9:3A:FA:0F:06 | 长度 | 长度为32位,由用. 分隔开的4个8位组成 | 长度为48位,6个字节,表现为12个16进制数,每两个用: 分开 | 应用位置 | IP地址应用于网络层 | MAC地址应用于数据链路层 | 分配依据 | 动态IP由DHCP服务器负责分配 | 由制造商在生产网卡时写在设备内部。其中前6位(0E:B9:3A)代表网卡制造商编号,由IEEE分配。后6位(FA:0F:06)由设备制造商自行分配 |
Windows下查看ip及mac
可以使用ipconfig /all 进行查看
Linux下查看ip及mac
在linux下可以使用ifconfig 来查看ip及mac地址信息
- 安装net-tools工具
- 执行命令
ifconfig
端口号
端口号可以用来区分一台计算机上进行通讯的不同应用程序,所以又叫程序地址。
端口个数
一个机器上最多有65535个端口号。原因是当我们使用TCP或UDP协议时,请求报文中会有2个字节用来存储端口号信息,2byte=16bit,所以一共是65536个,但是0号端口有特殊用户,最终一共可用的端口是65535个。
一般来说,0~1023都是知名端口,比如http的80端口、FTP的21端口等。系统自动分配的端口一般是10000往上。
一个服务器上最多可以有多少个连接
如果端口号一共65535个,那连接也最多是65535个吗?
一个连接由源ip+目标ip+协议+源端口+目标端口组成,只要这5个要素有一个不一样,都是不同的连接。
如果这个服务器是服务端:
- 每一个来连接服务端的客户端ip都不同
- 所以一个服务端理论上最大可支持的TCP连接数应该是ip的总个数*65535
如果这个服务器是客户端:
- 每一个来连接客户端的服务端ip都不同
- 所以一个客户端理论上最大可支持的TCP连接数应该是ip的总个数*65535,但是由于客户端允许端口复用,所以理论上的最大值更大一些。
TCP三次握手过程
TCP在建立连接时需要进行三次握手,我们用下面的图来理解一下三次握手是如何握手的。
- 客户端对服务发起请求,请求体重SYN标志位置为1,同时发送一个随机的seq_no,随后,客户端进入SYN_SENT状态。
- 服务端接收到客户端发送的消息后,服务端进入SYN_REVD状态。然后给客户端发送消息。在消息体中,SYN标志位为1,ACK标志位也为1,同时ack_no的值为接收到的seq_no的值+1,在发送一个随机的seq_no给客户端
- 客户端收到消息并验证ack_no正确后,客户端进入ESTABLEISHED状态。然后给服务端再发送消息,在消息体中,ACK标志位位1,ack_no为收到的seq_no的值+1
- 服务端接收并确认ack_no的值无误后,服务端也进入ESTABLEISHED状态
- 三次握手成功
SYN洪泛攻击
由于TCP连接在建立之前需要进行三次握手,而整个linux允许存在的处于三次握手中的连接总数为1024。如果黑客使用特殊手段不断的给服务器创建半连接,占满1024。服务器就不能接收新的连接了。这就是SYN洪泛攻击。
|