Linux-网络部分总结(一概念)

Linux-网络部分总结(一概念)

 
 
计算机网络 ,通internet链接各级用户。
多种网络服务为用户提供不同服务、例如ftp、web、tftp等
网络的搭建由各种网络拓扑来提高网速,容错等问题例如:
总线拓扑、星型拓扑、扩展星型拓扑、环形、双环拓扑、全网状拓扑、部分网状拓扑。
 
 
osi模型
应用层:网络进程访问应用层application
表示层:数据的表达presentation
会话层:数据的会话session
传输层:负责可靠的传输transport
网络层:数据传输,逻辑上的唯一地址,路由数据包network
数据链路层:访问介质,定义如何格式化数据以便进行传输以及如何控制对网络的访问,物理地址 data link
物理层:二进制传输,定义了物理的特性 physical
PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位(7层单位的通称)
物理层的 PDU是数据位 bit
数据链路层的 PDU是数据帧 frame
网络层的PDU是数据包 packet
传输层的 PDU是数据段 segment
其他更高层次的PDU是消息 message
 
 
局域网 Local Area Network
1.局域网(lan):一般限定在较小的区域内,小于10km的范围,通常采用有线的方式连接起来。
2.城域网(man):规模局限在一座城市的范围内,10~100km的区域。
3.广域网(wan):网络跨越国界、洲界,甚至全球范围。
 
 
三种通讯模式 (单工 半双工 全双工三种工作模式)
单播 单对单通讯、每个数据包发往单个目的主机,目的地址指明单个接收接口称为单播
广播 一对多通讯、一个主机向网上的所有其他主机发送帧,称为广播
多播(组播)处于单播和广播之间:帧仅传送给属于多播组的多个主机
 
 
现在常用的非屏蔽的双绞线utp的线序 (同轴电缆,光线|超五类以上)
白橙橙白绿蓝白蓝绿白棕棕 T568B
白绿绿白橙蓝白蓝橙白棕棕 T568A
 
 
以太网Ethernet Frame(工作在物理数据链路层)数据帧结构
preamble 7|sof 1|Desination address(目标)6| Dourcea address(源地) 6|Length 2|802.2Header and data 46-1500|fcs 4
Ethernet 2
IEEE802.3帧结构(byte)
preamble 7|sof 1|Desination address 6|Dourcea address 6|Type 2|802.2Header and data 46-1500 |fcs 4
type 区分上层协议
IEEE 802.1Q 帧结构(byte)
Desination address 6|Dourcea address 6|Vlan tag 4|Type 2|802.2Header and data 46-1500|fcs 4
vlan tag: tpid 2|pri 3bit|cfi 1bit|vid 12bit
 
 
TPID:TagProtocolIdentifier(标签协议标识符),2Byte,表示帧类型,取值为0x8100时表示IEEE802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃,各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时,为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致
PRI:Priority,3bit,表示数据帧的802.1p(是IEEE802.1Q的扩展协议)优先级。取值范围为0~7,值越大优先级越高。当网络阻塞时,交换机优先发送优先级高的数据帧
CFI:CanonicalFormatIndicator(标准格式指示位),1bit,表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0
VID:VLANID,12bit,表示该数据帧所属VLAN的编号。VLANID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094
 
 
Tcp:传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路(全双工
 
 
tcp 报文头部 在type后面IPTCP 有一个20字节的固定头部
0-65535-源端口0-16|目标端口16-32|序号seq32|确认号ack32|数据偏移4|保留6|6标记位-URG1(紧急指针有效)|ACK|PSH(1不在缓冲放直接发包|RST(重置位1重新链街)|SYN(同步)|FIN(结束)|窗口16|检验和16|紧急指针16|选项|填充(不固定的)
 
 
源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个
 
 
序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始
 
 
确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送方:我希望你(指发送方)下次发送的数据的第一个字节数据的编号为此确认号
 
 
数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节
 
 
URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效
 
 
ACK:表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
 
 
PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
 
 
RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
 
 
SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
 
 
FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
 
 
窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值
 
 
校验和:提供额外的可靠性
 
 
紧急指针:标记紧急数据在数据字段中的位置
 
 
选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)
4-20=40字节
最大报文段长度:Maxium Segment Size,MSS,通常1460字节
窗口扩大:Window Scale
时间戳: Timestamps
。。。netstat -na -nat 查看链接状态和 ss -nta 功能相似
面向链接:先建立链接在通讯 三次握手
第一次握手 c发送请求 SYN=1 seq=x序号 c--r c-CLOSE-SYN SENT r-CLOSE LISTEN
第二次握手 r回 SYN=1 ACk=1 SEQ=y ack=x+1 r--c r-LISTEN-SYN RCVD c-YN-SENT-ESTAB LISTHED
第三次握手 c回 ACK=1 seq=x+1 ack=y+1 c--r r-ESTAB LISTHED
 
 
sync半链接 accept全连接 请求来 建立半链接(链表) 握手完成建立全连接(链表)
/proc/sys/net/ipv4/tcp_max_syn_backlog未完成连接队列大小,建议调整大小为1024以上
/proc/sys/net/core/somaxconn完成连接队列大小,建议调整大小为1024以上
。。。
终止链接 四次挥手 互相都可以发送
第一次挥手 FIN=1 seq =u c--r c-ESTAB LISHED-FIN WAIT 1
第二次挥手 ACK=1 seq=v ack=u+1 r--c r-ESTAB LISTED-CLOSE_WALT
第三次挥手 FIN=1 ACK=1 seq=w ack=u+1 r--c c-TIN_WAIT1-FINWAIT2-TIME WAIT r-CLOSE WAIT-LASTACK
第四次挥手 ACK=1 seq=u+1 ack=w+1 c--r c-TIMEWAIT等待两倍的数据端最大时长-CLOSE r-CLOSED
NetworkMangager 和 network 服务可能冲突
yum install httpd-tools;ab -c 100 -n 2000 http://192.23.. 远程链接多次 172.22.149.155
 
 
处于FIN_WAIT_2状态的客户端需要等待服务器发送结束报文段,才能转移至TIME_WAIT状态,否则它将一直停留在这个状态。如果不是为了在半关闭状态下继续接收数据,连接长时间地停留在FIN_WAIT_2状态并无益处。连接停留在FIN_WAIT_2状态的情况可能发生在:客户端执行半关闭后,未等服务器关闭连接就强行退出了。此时客户端连接由内核来接管,可称之为孤儿连接(和孤儿进程类似)
Linux为了防止孤儿连接长时间存留在内核中,定义了两个内核参数
/proc/sys/net/ipv4/tcp_max_orphans指定内核能接管的孤儿连接数目
/proc/sys/net/ipv4/tcp_fin_timeout指定孤儿连接在内核中生存的时间
 
 
TCP超时重传相关的两个内核参数:
/proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
/proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)
TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fastretransmit)和快速恢复(fast recovery)。拥塞控制算法在Linux下有多种实现,比如reno算法、vegas算法和cubic算法等。它们或者部分或者全部实现了上述四个部分
当前所使用的拥塞控制算法
/proc/sys/net/ipv4/tcp_congestion_control
 
 
有限状态机FSM:Finite State Machine
CLOSED 没有任何连接状态
LISTEN 侦听状态,等待来自远方TCP端口的连接请求
SYN-SENT 在发送连接请求后,等待对方确认
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING 双方同时尝试关闭传输连接,等待对方确认
 
 
ARP 地址解析地址 拥有ip地址通过广播获得mac地址
ARP先于三次握手
RARP 反向解析地址 mac-ip 发送请求IP地址
 
 
IP 协议PDU报文头部 20字节固定
版本:占4位,指 IP 协议的版本目前的IP协议版本号为4
首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部长度的最大值是60字节
区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下不使用
总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU
标识:占16位,它是一个计数器,通常,每发送一个报文,该值会加1,也用于数据包分片,在同一个包的若干分片中,该值是相同的
标志(flag):占3位,目前只有后两位有意义
DF: Don’t Fragment 中间的一位,只有当 DF=0 时才允许分片
MF: More Fragment 最后一位,MF=1表示后面还有分片,MF=0 表示最后一个分片
片偏移:占12位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移以8个字节为偏移单位
生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
cat /proc/sys/net/ipv4/ip_default_ttl
协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议
首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法
源地址和目的地址:都各占4字节,分别记录源地址和目的地址
片偏移以8个字节为偏移单位,假定MTU=1500
三个包标识ID都相同,三个包DF都为0,前两个MF=1,最后一个MF=0
 
 
ip 地址
私有地址范围
A 10.0.0.0 10.255.255.255
B 172.16.0.0 172.31.255.255
C 192.168.0.0 192.168.255.255
 
 
路由
主机路由:记录到哪一个主机怎么走(数据庞大)
网络路由:网段怎么走
默认路由:有一条默认路径只有这一条路
优先级:精度越高优先级越高
route -n
 
 
dhcp 动态主机配置协议 c-r 广播发现报文discover|r-c 广播提供消息offer|c-r 发送请求消息做出响应request|r-c 确认消息结束交换过程ACK报文

猜你喜欢

转载自blog.51cto.com/14230286/2378160