TCP/IP协议

无线网络标准

IEEE 802.3

802.11a/b/g/n/ac 物理层,数据链路层data link layer

 

以太网是工作在物理层和数据链路层上

单工,双工(物理层概念)

单工:单向传输数据    (广播,收音机)

双工:双向传输数据

全双工:同时双向       (手机)

半双工:轮流双向     (对讲机)

 

Hub集线器

共享带宽(同一时间只能一台机器发数据)

半双工(一边发另一边不能发)

广播发送数据(没有安全性)

工作在物理层(不记忆MAC地址)

 

冲突域:指范围,一个主机发送单波数据另一个主机同时发送单波数据,数据冲突,这两台主机就在同一个

冲突域。如果两个主机同时向网络发信息,信息不冲突,就证明两个主机在不同的冲突域。

 

以太网桥

工作在数据链路层(记录MAC地址)

学习源地址填充MAC地址表(网桥表)

网桥可以隔离分割冲突域

学习时根据源地址记录机器位置,添加到网桥表

通过记录网桥表,实现数据隔离,分割冲突域

当学习完成,进入转发阶段时,以太网桥是通过目标地址来转发

网桥能够隔断冲突域不能隔断广播域

广播地址只能出现在目标地址,所以网桥表不可能出现广播地址

广播域:一个主机发送广播,其他机子收到广播,那就表示所有机子在一个广播域中。

 

交换机swich

工作在数据链路层(MAC地址)

全双工

每一个接口代表一个冲突域

无法隔断广播域

 

查看网卡信息

mii -tool -v eth0

ethtool eth0

 

路由器router

工作在网络层

隔断广播形成的广播域

选择路由表中到达目标最好的路径

维护和检查路由信息

连接广域网

路由表记录的不是MAC地址而是IP地址

路由器和电脑上都有路由表而且至关重要

只要要网络通讯,就必须有路由表告诉系统信息应该怎么走

路由器隔开的叫网段

注意:100M的网络传输100M的数据理论要8秒多,因为实际传输速率是要100M/8bit,还有报文首部等额

外验证信息等要传输,所以实际达不到那么高。

 

查看路由表(在电脑和路由器上都有)

route -n

网卡工作在数据链路层

wifi 802.11工作在数据链路层

交换机是局域网设备,路由器是广域网设备

局域网通讯是基于广播机制的,广域网通讯是基于单波(点对点)机制。

 

VLAN虚拟局域网

交换机隔断广播域的技术

VLAN=广播域=逻辑网络(Subnet)=网段

按照交换机端口来划分不同的VLAN,实现隔断广播的效果

VLAN一般使用数字来编号  10VLAN    20VLAN

在同一个广播域的机器必须使用同一个广播域的IP地址(网段)

172.20.x.x     不能直接访问     172.18.x.x    必须加路由器

因此可以在路由器上加安全访问策略,实现单向或双向或禁止访问。

两个VLAN间通讯必须有路由

因此用trunk连接路由器和交换机,实现不同VLAN之间的通讯。

 

trunk

干道线路

链接不同楼层同一VLAN接口的数据,可以同时传输多个VLAN数据。

trunk协议

为了区别不同VLAN数据,所以会修改数据包,为数据帧打标签,添加VLAN标签

国际标准:802.1Q  (华为等)

思科:ISL

 

(另一个角度划分)分层的网络架构:

 

核心层     高速交换机  企业级应用快速转发

分布层     路由器         路由、安全策略

访问层     交换机         接入

TCP/IP 协议栈                     OSI

应用层            data                        应用层   表示层   会话层

传输层            tcp/udp                  传输层

Internet层      ip                            网络层

网络访问层     ethernet                 数据链路层   物理层

 

 

应用层协议:

http80 https443  ftp21   nfs   dns(tcp53 udp53) tftp69   smtp25  pop3  imap143 telnet23  ssh22 QQ

mysql 3306

oracle 1521

sql server 1433

 

查询协议

cat /etc/services

cat /etc/services  | less

端口号就是标记

表示上层协议的区分

 

传输层

UDP  TCP

里面含有上层协议的端口号,用于区分数据的类型

多会话

分段

流控制(需要时)

面向连接(需要时)

可靠性(需要时)

 

Internet层

里面也有标记体现上层是TCP还是UDP协议的类型

IP地址

 

TCP

传输控制协议

工作在传输层

可靠 (错误检查)

有序号  (可重传)

文件Email下载

 

UDP

用户数据包协议

高效

无序号

声音图像流

 

TCP特性

工作在传输层

面向连接协议(有协商过程)

全双工

半关闭

错误检查

数据包打包分段

确认机制

数据恢复重传

流量控制滑动窗口

拥塞控制,慢启动和拥塞避免算法

 

TCP包头

共32位

0-15位表示源端口

16-31位表示目的端口

因此理论最多通讯的应用程序

2^16=65536

 

IANA:互联网数字分配机构

0-1023:系统端口(仅管理员可用端口)

1024-49151:用户端口或注册端口

49152-65536:随机端口(客户端,上面是服务器的端口)

其范围的定义:/proc/sys/net/ipv4/ip_local_port_range

查看当前空余未被使用的端口号

cat  /etc/services | grep 9527

 

源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个NFS  network file system

端口号不固定,且同时用好几个

 

序号

本方电脑端的数据包编号

最大编号

2^32

42亿多,用完就重新从0编(配合时间戳区分)

 

确认号

对方电脑端的序号

例如序号为100对方确认号就是101

表示100号包已收到并希望本方下次发101号包

 

 

ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段

 

SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段

 

FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段

 

 

 

三次握手:                                                           A状态                          B 状态

第一次握手:SYN位是1其他位全为0                  CLOSED                    CLOSED/ LISTEN

第二次握手:SYN、ACK为1其他为0                 SYN-SENT                    SYN-RCVD

第三次握手:ACK为1其他为0                         ESTABLISHED               ESTABLISHED

 

四次挥手:                                                          A状态                            B状态

第一次挥手:FIN为1                           ESTABLISHED/FIN-WAIT1         ESTABLISHED

第二次挥手:ACK为1                                     FIN-WAIT2                     CLOSE-WAIT

第三次挥手:FIN、ACK为1                            FIN-WAIT2                        LAST-ACK

时间等待状态:2倍MSL时间,消息生存期

第四次挥手:ACK为1                               TIME-WAIT /CLOSED                  CLOSED

 

有限状态机FSM:FiniteState Machine

CLOSED 没有任何连接状态

LISTEN 侦听状态,等待来自远方TCP端口的连接请求

SYN-SENT 在发送连接请求后,等待对方确认

SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认

ESTABLISHED 代表传输连接建立,双方进入数据传送状态

FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认

FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求

TIME-WAIT 完成双向传输连接关闭,等待所有分组消失

CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认

LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失

CLOSING 双方同时尝试关闭传输连接,等待对方确认 (比较少见)

 

窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量

校验和:提供额外的可靠性

紧急指针:标记紧急数据在数据字段中的位置

 

 

处于FIN_WAIT_2状态的客户端需要等待服务器发送结束报文段,才能转移至TIME_WAIT状态,否则它将一直停留在这个状态。如果不是为了在半关闭状态下继续接收数据,连接长时间地停留在FIN_WAIT_2状态并无益处。连接停留在FIN_WAIT_2状态的情况可能发生在:客户端执行半关闭后,未等服务器关闭连接就强行退出了。此时客户端连接由内核来接管,可称之为孤儿连接(和孤儿进程类似)

孤儿连接数最大数目:

/proc/sys/net/ipv4/tcp_max_orphans

 

孤儿连接最大保留时间:

/proc/sys/net/ipv4/tcp_fin_timeout

 

SYN攻击

通过不断发送2次握手耗光服务器内存,导致服务器无法响应普通用户访问

 

哪些端口处于监听状态

ss -ntul

 

Window size

固定窗口

滑动窗口

 

 

 

与TCP超时重传相关的两个内核参数:

/proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3

/proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)

 

 

UDP包头

16bit  source port     16bit destination port

16bit  UDP  length    16bit  UDP checksum

data

 

特性

工作在传输层

提供不可靠的网络访问

非面向连接协议

有限的错误检查

传输性能高

无数据恢复特性

 

Internet层

 

Internet Protocol IP

Internet Control Message Protocol (ICMP)

Address Resolution Protocol(ARP)

Reverse Address Resolution Protocol(RARP)

 

分层编址

无数据恢复功能

IP协议

 

ICMP协议

ping 命令就是用这种协议

默认每次发送一条

 

判断网络稳定性:把包调大   最大65507

ping 192.168.30.128 -s 65507

 

洪水攻击    dos攻击  拒绝服务

必须本机性能比目标性能好,或者组团PING

ping 172.20.108.10 -s 65507 -f

 

IGMP     多播应用

Internet Group Management Protocol

 

ARP

地址解析协议

把IP地址解析成MAC地址

 

查看APR

arp -n

 

注意:

tcp握手前一定要经过arp广播取得MAC地址才有可能进行

电脑上有一个类似路由表的表格,把取得的IP和MAC地址关系存放起来

ARP协议是基于广播机制

ARP广播不能跨路由

ARP会先行判断两台机子是否处于一个4网段:

1)如果是一个网段则发送ARP广播。

2)如果不是,就使用ARP广播发送IP地址给默认网关,以此取得路由网关的MAC端口地址,以后发送数据包直接使用对应端口的网关MAC地址,由路由再次使用ARP广播取得目标机器MAC地址,同时转发信息给目标IP机器。

3)由此可知,在跨路由情况下,MAC地址会变化,IP地址不变。

 

arp -d

清除目标IP地址对应MAC地址记录

 

systemctl restart network

重启网络

 

特殊ARP

机子重启后,通过自问自答形式取得IP,目的防止将使用的IP地址与网络上其他机子冲突(IP相同)。

 

RARP

反向地址解析协议

通过MAC地址获得绑定的IP地址

通常用于无硬盘工作站获取IP

通常获取的是固定的IP地址

 

面试:

当你打开网络浏览器访问网站,背后做了什么事

它详细的工作过程是什么?

应用层APP发出通讯请求,并提出数据包是基于可靠还是基于效率。

传输层响应上层APP的请求,准备建立通讯,基于可靠性则使用TCP协议,基于效率则使用UDP协议。在数据包里添加源端口号以及SYN等信息,并向下层INTERNET层提出通讯要求。

INTERNET层响应上层传输层的要求,准备建立IP通讯,把上层信息添加好本机以及对方IP地址信息,并通过查询ARP表来确定是否有对应IP的MAC地址,如果没有,则需要通过ARP广播向网路中寻找目标IP。于是向下层网络访问层提出ARP广播请求。

网络访问层响应INTERNET层要求,把源地址设为自己MAC,以48个1广播地址为目标MAC向网路发送广播信息。对方主机的网络访问层收到Frame后,向INTERNET层反映,目标主机INTERNET层收到广播信息后,添加对方IP以及MAC地址到自己的ARP table,要求网络访问层通过单波把自己的MAC地址信息发送回给主机。主机收到信息后,传送给本机ARP,并在ARPtable里添加上对方的IP以及MAC信息。

至此通讯双方的IP以及MAC地址信息都已经齐全,可以开始三次握手过程,SYN、SYN ACK 、ACK通过三次握手建立对话连接后,开始进入稳定数据传输模式。

 

 

 

 

Internet 协议特征

 

运行于OSI 网络层

面向无连接的协议

独立处理数据包

分层编址

尽力而为传输

无数据恢复功能

 

IP PDU 报头

 

含有上层协议的类型(tcp/udp)

版本:占4位     ipv4

标识: 大于1500数据帧大小的单位切割的标识,标识一样就代表来自同一个包

标志:占3位,表示包是拆分包还是不可拆分包,同时是否最后一个拆分包

目前只有后两位有意义

DF,中间的一位,只有当DF=0时才允许分片

MF,最高位,MF=1表示后面还有分片。MF=0表示最后一个分片。

源地址  目标地址  每个地址32位      2^32 总共42亿个地址

 

片偏移,实际就是切片包位于整个数据包的位置。

生存时间就是,ping命令看到的ttl,以经过路由器数量为单位,每经过一个路由器,ttl值就要减1。ttl为0则会被认为失效,会被抛弃。默认值为64。

 

ttl值可人为更改

echo 128 > /proc/sys/net/ipv4/ip_default_ttl

linux默认64,windows默认128,为防黑客通过ping判断系统类型,可以修改ttl来实现。

 

192.168.30.128

如何从10进制转换成2进制

实际范围就是:0-255      00000000-11111111

00000000     0

00000001     1

00000010     2

00000100     4

00001000     8

00010000     16

00100000     32

01000000     64

10000000    128

11111111    255

所以根据上图可知,

192=128+64

11000000

168=128+32+8

10000000+00100000+00001000=10101000

30=32-2

00100000-00000010=00011110

128

10000000

 

192.168.30.128

11000000  10101000 00011110 10000000

 

把这一串数字连起来用bc转化成10进制就是

3232243328

 

ping 3232243328  能ping通!

 

实验证明IP地址为2进制

 

协议域 Protocol Numbers

6表示TCP

17表示UDP

 

它们可唯一标识IP 网络中的每台设备

每台主机(计算机、网络设备、外围设备)必须具有唯一的地址

IP地址由两部分组成:

网络ID:netid

标识网络

每个网段分配一个网络ID

主机ID:hostid

标识单个主机

由组织分配给各设备

 

为什么有了唯一的MAC地址还要有IP地址来标识设备?

因为MAC地址体现不出管理性,IP地址则可以体现管理思路,例如通过网络ID体现主机处于哪个网段,主机ID体现哪个网段里哪一台主机。

 

网络ID肯定在前面,主机ID肯定在后面,具体看地址分类:

 

A类地址

0XXXXXXX.J.Y.Z

范围就是

00000000   0

01111111   127

0-127

但是0和127都是特殊地址必须去除,所以实际范围是1-126

前8位为网络ID

 

A类网络有几个?

 

公式:

网络(网段)数量=2^可变网络ID位数

一个网络的主机数量=2^主机ID位数-2

 

两个地址不能用所以减2:

X.0.0.0  X网段号

X.255.255.255  X网段广播

 

有类地址:

类别            地址                                  网段号          网络ID           主机ID

A     0xxxxxxx.j.y.z                               1-126           前8位             后 24位

B     10xxxxxx.xxxxxxxx.y.z                  128-191       前16位           后16位

C     110xxxxx.xxxxxxxx.xxxxxxxx.z     192-223        前24位           后8位

D     1110xxxxx.x.x.x                           224-239                 多播地址

E      11110xxx.x.x.x                            240-255                 保留地址

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/101537

(0)
上一篇 2018-06-24 12:20
下一篇 2018-06-24 15:26

相关推荐

  • 马哥教育 – 第二周作业

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 <1>命令:CP 概念:用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。 语法…

    2018-05-21
  • 迁移/home目录到新的分区上步骤

    迁移/home目录到新的分区上步骤 1、 安装一个新的硬盘 2、 查看新硬盘的设备名,如下图所示: 3、 在新硬盘上创建一个主分区,如下图所示: 4、 将新创建的分区格式化为ext4文件系统,并加上/home卷标,如下图所示: 5、 创建/home目录临时挂载点,并将分区挂载到临时挂载点上,如下图所示: 6、 切换单用户,将除了root用户之外的用户踢出,如…

    2018-04-27
  • 脚本练习题

    1.使用脚本打印出如下图形 ************答案一:#!/bin/bash#1.接受一个参数为星星的个数。num=$1 #2.求出总共要打印的行数let lines=num*2 #3.for 循环处理每一行的数据for i in `seq $lines`;do#4.前半个星星处理逻辑if [ $i -le $num ];thenfor j in `s…

    Linux笔记 2018-03-26
  • 加密和安全

    常见的加密算法和安全协议 一、对称加密:加密和解密使用同一个密钥,依赖于算法和密钥,其安全性依赖于密钥而非算法 常见的算法:DES ​ 特性: ​ 加密、解密使用同一个密钥 ​ 将明文分隔成固定的大小块逐个进行加密 ​ 缺点: ​ 密钥过多、密钥分发 二、非对称加密:采用的是公钥加密方法,密钥是成对出现的,公钥是从私钥中提取出来的 ​ 公钥:公开给所有人;p…

    Linux笔记 2018-05-10
  • MySQL数据库简介及安装实验

    本节索引: 一、MySQL数据库简介 二、实验:使用yum源安装MariaDB 10.2.15 三、实验:通用二进制格式安装MariaDB 10.2.15 四、实验:编译安装MariaDB 10.2.15 五、实验:进行mysql(MariaDB)多实例安装 一、MySQL数据库简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目…

    2018-06-05
  • 第六周博客

    练习:配置bond1   (两个网卡必须物理上在一个网段) 1、service NetworkManager stop 2、vim ifcfg-bond0 DEVICE=bond0 IPADDR=192.168.30.100 PREFIX=24 GATEWAY=192.168.30.1 BONDING_OPTS=”miimon=100 mode=1” 3、v…

    Linux笔记 2018-05-06