赞
踩
TCP连接管理中的保活机制:
TCP协议是面向连接通信,若通信双方长时间没有数据往来,就需要确定对方还是否在线,连接是否正常?
若通信双方长时间(7200秒)没有数据往来,在服务端会向客户端每隔一段时间(75秒)发送一个保活探测数据包,要求对方进行响应,若多次(9次)无响应,则认为连接断开.(时间都是可以配置的),连接断开对上层程序编写的影响:recv返回0/send触发异常
网络层/链路层协议的解析:
网络层:IP协议
V--4位版本:IPV4/IPV6
L-4位头部长度:IP报头也是不定长的,最长60字节,最小20字节,有40字节的选项数据;以4字节为单位.
8位TOS字段:3位优先权弃用,4位服务类型(最小延时,最大吞吐量,最高可靠性,最小成本),1位保留
16位数据报大小:包含IP报头在内的一个IP报文的大小,最大65535-意味着一个IP报文的最大长度不能超过64K.影响:TCP在传输层选择合适大小MSS数据发送,UDP保温数据最大大小小于64K-20-8
16位分片标识:UDP数据在网络层有可能进行数据分片,标识当前分片属于哪个完整报文.
3位分片标志:1位保留,1位禁止分片标志--是否禁止分片;1位更多分片标志--类似于结尾标志
13位分片偏移:以8个字节为单位,标识当前分片在完整报文中的位置(相对起始位置偏移量)
8位TTL:报文最大生存周期--一个数据经过多少路由,经过一个路由就会-1,为0的时候则将数据丢弃(防止路由环路)
8位上层协议:数据分用时,网络层取出数据,需要通过这个协议类型,决定传输层使用哪个协议对数据分用解析
16位校验和:校验数据一致性
32位源IP地址/32位目的IP地址:负责描述数据从哪个主机来到哪个主机去--描述起点到终点
40字节选项数据:例如保留经过的路由器地址信息
网络层的数据分片:若传输层交付下来的数据大小过大,会在网络层将这个大数据截断为多个小数据分片,然后每个分片封装IP报头进行发送,到达对端之后分片重组,组合成为完整的一个报文交付给上层.
传输层交付下来的数据过大,到底是多大就会分片?---取决于链路层的一个限制---MTU(最大传输单元).
传输层TCP协议协商的MSS根据MTU计算得到,因此TCP传输的数据到了网络层通常不会分片.
但是UDP协议传输数据,只限制小于64K-28就可传输,但是若大于MTU大小就会在网络层进行数据分片---网络层数据分片主要针对UDP
13位分片偏移,为什么要以8字节为单位?
13位表示的最大大小8192=2^10*2^3;但一个完整的UDP报文有可能接近64K大小;最后一个分片有可能偏移量都6万多了,13位偏移大小没法表示;因此这个字段中大小是以8字节为单位8=2^3;8192就表示具体偏移量8192*8=64K,完整表示偏移量.
地址管理与路由选择:
IP--无符号的32位整数,网络中唯一标识一台主机.IP地址给主机分配保证唯一性.
DHCP--动态地址分配,整个网络由很多小网络组成,按照网络进行地址分配.
IP地址组成:网络号+主机号
网络号:一个路由组建局域网时所对应的网络标识--(每个路由器对于接收到的数据进行源地址判断,这个主机是否属于自己网络,属于才转发,不属于则直接丢弃)--必须使用分配的地址上网(避免别人设置造成冲突)
主机号:局域网中大家拥有相同网络号的情况下,标识唯一的一个主机.(主要保证网络号如何划分).
网段的划分:
早期:将所有IP地址划分为5类地址,如下:
组建什么网络,去权威机构申请,分配一个网络号,接下来组建网络,主机号的分配由自己完成.
现代划分方式:--CIDR方案:引入一个新的字段--子网掩码
子网掩码:无符号32位的整数,不过数据由连续的二进制1组成
1.子网掩码取反可以得到局域网中的最大主机号,从0到最大主机号就是局域网中主机号的分配范围255.255.255.0--255--0~255
2.子网掩码与IP地址相与得到网络号;(路由器收到一个数据,拿数据的源地址与自己网络号相与,与自己网络是否相匹配)~255.255.255.252->0.0.0.3-> 0~3就是这个局域网主机号,这个局域网可连接2个主机.
若有一个公司,申请一个C类地址,192.168.122.0/24,公司有4个部门,想要平均划分初4个子网,请问如何划分,划分后各个子网的网络号是多少?子网掩码是多晒?IP地址范围是多少?
C类网络:拥有256个主机号0~255;平均划分4个子网--那么每个子网的主机号64个,主机号范围0~63
最大主机号取反就可得到子网掩码:00111111(63取反)->255.255.255.(11000000)192->255.255.255.192
网络范围:192.168.122.0~192.168.122.63--192.168.122.0/255.255.255.192
192.168.122.64~192.168.122.127--192.168.122.64/255.255.255.192
192.168.122.128~192.168.122.191--192.168.122.128/255.255.255.192
192.168.122.192~192.168.122.255--192.168.122.192/255.255.255.192
特殊的IP地址:
1.主机号全为0的IP地址:网络号--用于标识网络--不能分配给主机
2.主机号全为1的IP地址:UDP局域网广播地址--不能分配给主机
UDP支持局域网广播,将数据发送的广播地址,可认为是发送给局域网中的所有主机--局域网所有主机都能识别
3.127.0.0.1:每个主机都有的本地虚拟回环网卡地址--用于本机网络测试
4.0.0.0.0:适配本机任意网卡地址,用于服务端监听地址--标识监听本机所有网卡IP
5.255.255.255.255:全网广播地址--任意一个主机拿到发往这个地址的数据都会认为和自己匹配--常用于DHCP广播
路由选择:根据数据中的目的网址,来为数据选择一条合适的路径
每一个主机连接上路由器之后,都会全网广播DHCP请求,路由器收到后会回复:
DHCP响应:给主机分配IP地址 当前所在网络的子网掩码 当前所在网络的网关地址
每个路由器中,都包含一张路由表:
Destination Gateway Genmask Use lface
目标网络 网关地址 子网掩码 对应这个网络的网卡名称
192.168.2.0 255.255.255.0 eth0--作为组建局域网的网关网卡
192.168.1.0 255.255.255.0 eth1--作为连接上层网络的网卡
default 192.168.1.1 eth1
路由选择的过程,其实就是通过路由表进行目的主机的网络匹配,看是否是与自己相连的网络,若是,则直接通过连接这个网络的网卡,发送出去,若不是,则将数据发送给自己的网关设备(上层路由器),让自己的网关设备进行选择.
公网与私网(外网与内网)
私网:仅限于网络内部通信的网络,无法连接外部
公网:互联网
IP地址不够用,除了DCHP还有NAT技术--网络地址转换技术
一个路由器可以组建一个私网,私网中的主机上网时候都是用路由器对外的一个地址上网,那么这些私网中的主机IP地址与其他私网中的主机IP地址就不怕存在冲突问题;
他们对外都是使用路由器上网的,只要保证不与外部IP地址冲突就可以,但是相邻的两个网络不能使用相同网络号.网络是否相邻,主要取决于路由器的连线,与路由器相连线的网络都属于相邻网络
在RFC1918中规定,公网与私网,并且能够用于组建私网的网址有哪些:
10.*.*.* 172.16.*.*~172.31.*.* 192.168.*.*
大型私网 中型私网 小型私网
数据链路层
物理地址: MAC地址---用来识别数据链路层中相连的节点;不能修改,唯一的.无符号8字节整数
以太网协议格式:
6字节源MAC地址/6字节目的MAC地址:标识从哪个设备传输到哪个设备
proto:上层网络层协议类型,用于数据分用
data:网络层的报文数据
CRC:校验和数据帧尾
一块网卡封装了以太网帧之后(包含源MAC和目的MAC以及上层协议),将数据帧广播给与自己相连的设备,收到数据的网卡,查看MAC地址是否是自己的,若是,则接收,若不是则直接丢弃.
怎么知道对方的MAC地址是多少?
ARP协议:介于网络层与链路层之间的协议;协议中既包含IP地址还包含MAC地址--通过IP地址获取MAC地址
向相邻设备广播ARP请求(包含由对方的IP地址和自己的信息),相邻设备收到ARP请求之后,进行解析,查看目的端IP地址是否与自己符合,若不符合则直接丢弃,若符合,则组织ARP应答,填充自己的MAC地址回复给对方.获取到对方MAC地址之后,会将MAC地址与IP地址对应的关系缓存一段时间(20~30分钟)(IP地址是动态分配的)
ARP局域网欺骗攻击:恶意主机收到ARP请求之后,直接回复ARP应答,伪装自己就是指定主机.
MTU:最大传输单元---限制链路层数据帧大小--主要限制网络层IP报文的长度
MSS:最大数据段大小--应用层交付给传输层的数据大小
假设mtu=1500;请问mss是多少? mss=mtu-40 1460
mss是TCP协议中特指的信息,最大数据段大小都是以最小头部大小进行计算的,而TCP和IP协议报头都是最小20字节
UDP的MSS就是MTU-28:因为UDP报头长度是固定的8字节
MTU对于TCP协议的影响:
TCP传输,在三次握手的时候,通过MTU计算自身的MSS,并且进行双方协商,每次都只从发送缓冲区取出不超过MSS大小的数据进行传输,因此,TCP在传输层会自动进行数据分段,因此在网络层不会进行数据分片.
MTU对UDP协议的影响:
因为UDP的传输层并不会计算MSS,只要数据大小小于64K-28,都能发送,但受限于MTU,可能会在网络层进行数据分片,将一个完整的大报文分片成为一个个小的数据片发送,到达对端之后再进行分片重组.
因为UDP不保证可靠传输,意味着一个完整报文中若有一个分片出问题,则整个报文都被丢弃,意味着UDP传输时候,分片越多,传输出问题的几率越大.程序员在编写UDP传输程序在应用层时考虑MSS的问题(sendto给与的数据大小最好不超过MSS大小),计量减少分片概率.
其他典型协议及技术:DNS/ICMP/NAT/NAPT/代理
DNS:Domain Name System 域名系统--用于进行域名解析,通过域名获取IP地址的系统
域名:www.baidu.com--服务器的名称
DNS是应用层协议 DNS底层使用UDP进行解析 浏览器会缓存DNS结果
域名解析服务器:采用分布式存储
域名解析服务器进行了层级划分遍布世界各地,增加了容灾能力,并且提高了性能压力.
域名服务器的层级划分:根域名服务器(向权威机构授权)->顶级域名服务器->二级域名服务器->三级
域名的等级划分:顶级域名(.com/.org/.gov/.edu.../.cn/.jp...)->二级域名(.baidu.com/.qq.com)->三级域名(docs.qq.com)...
域名的解析流程:
浏览器中输入URL回车之后发生了什么?
1.域名解析,得到服务器IP地址
2.根据HTTP协议格式组织HTTP请求数据
3.搭建TCP客户端,与服务器建立TCP连接,发送HTTP请求数据
4.等待服务器响应,进行解析,解析后将正文数据展示在浏览器上
ICMP:这是一个网络层协议,用于进行网络探测
ssh使用22端口/telnet使用23端口/ping使用多少端口--ping这个工具通过ICMP协议实现,而ICMP是网络层协议,不涉及端口
NAT/NAPT
NAT:网络地址转换技术--NAT服务会将流经网关设备的数据的源IP地址修改为自己的IP地址然后转发出去
功能:实现大量私网主机使用同一个对外IP地址进行上网(若不修改源IP地址,则源IP地址是一个私网地址,对方收到之后无法回复)
公网的设备只能找到公网地址,找不到私网地址,因此进行源IP地址替换,目的是为了让对方回复的时候,回复到自己网关设备上,然后网关设备在转发给自己.
但是在同一个私网中,有可能同时有很多主机都访问同一个服务器,回复过来后,网关设备如何选择给谁转发
NAPT:进行地址映射
NAPT对流经的数据进行修改源地址并转发的时候会记录对应地址关系.
代理和NAT的区别:
NAT服务通常部署在网关设备上,运行在网络层,进行源地址替换,目的主机一直是指定服务器
代理服务是一种应用,可以部署在任意设备上,运行在应用层,目的主机首先请求代理服务器,为了让代理服务器替自己请求.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。