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报文 web

相关文章
相关标签/搜索