ARP:Address Resolution Protocol,地址解析协议
在二层通信中必须要有目标MAC,但是这个MAC一般是未知的,已知的一般只有三层协议中的目标IP地址(域名是通过解析获取的IP),这个时候就需要ARP广播进行询问、寻找该目标MAC地址。
负责解析IP地址对应的MAC地址
在二层通信中必须要有目标MAC,但是这个MAC一般是未知的,已知的一般只有三层协议中的目标IP地址(域名是通过解析获取的IP),这个时候就需要ARP广播进行询问、寻找该目标MAC地址。
负责解析IP地址对应的MAC地址
在网络中,网络层会提供一个IP给设备,可以称为节点、node,在数据包中,根据IP找到了这个设备。在网络层解封装后,只有该设备的地址,在该设备上运行着许多应用程序,这时候就需要传输层的解封装后的端口号,用端口号确定该数据包传达到哪个应用。
翻译:我收到了来自同一来源mac和ip的三个数据包。我的哪一个应用程序获取每个应用程序中的数据
翻译:我会查看UDP或TCP目标端口来识别应用程序!
在传输中,两个设备互发数据时,源IP、目标IP会固定,然后根据应用使用的协议,在传输层决定使用TCP或UDP,接收方的端口号一般是不会相同的。
例如在http服务端中,80为服务端口,设备需要访问时会发送一个请求包,该请求包在传输层数据中会有目标IP(服务端IP),目标端口(服务端口),源IP(本设备的IP),源端口(源端口为随机)。在发送请求时会开通一个临时端口,该端口随机变化(系统自动获取一个未被占用的端口),用于发送接收数据包,当应用关闭时(网络会话关闭时),才会释放端口。
在华为设备中,可以使用tcp status命令查看当前设备与其他设备建立的连接。 Windows系统中,可以使用性能监视器查看。
常见的协议端口:
FTP:21(控制端口)、20(收端,根据FTP协议、模式使用)
HTTP:80 HTTPS:443
Telnet:23 SSH:22
SMTP:25 POP3:110 IMAP:143
DHCP:67服务端,68客户端。
在一个端口被占用后,如果还有程序需要占用该端口则需要关闭之前建立的连接,否则后面的程序将无法占用该端口。
案例:在一台服务器上搭建多个Web站点,解决方法有3个
1.端口号不同:修改服务占用的端口,开启两个服务,分别设置服务使用的端口号为80、8080,只要端口不一样(冲突)即可。
2.不同的IP:配置多IP即可,两个服务端口号同样使用80端口。非常不推荐,特别是从硬件来讲,灵活性、可用性极低。
3.不同的主机名(域名):将IP替换成域名,利用Web服务的虚拟主机配置,将不同域名映射到不同的站点目录。
协议 | 备注 |
---|---|
TCP | Transmission Control Protocol,传输控制协议 可靠的、面向连接的协议 传输效率低,类似打电话 |
UDP | User Datagram Protocol,用户数据报协议 不可靠的、无连接的服务 传输效率高,类似群聊 |
TCP:
UDP:
TCP比UDP多了序列号、确认序号、报头长度、保留位、标记位(URG、ACK等)、窗口、校验和、晋级为、可选项。
TCP的数据包:
UDP的数据包:
TCP:
所有基于TCP协议的应用,都会建立一个TCP连接。
TCP会话的建立-三次握手:
在应用建立连接时,会先发送SYN,(第一次握手)全称 Synchronize Sequence ,标记里的同步位,意思是请求同步。该数据包会有一个序列号,seq(Sequence Number)。 在服务收到后,会把标记位的ACK(Acknowleclgment number)进行标记,用作确认,该包也会包含序列号。 在收到服务器回复后,应用会对服务发过来的包进行确认,该包的序列号会是在上次发包数据中的下个序列号的数据,并且在ACK中会对收到的包中的序列号进行确认,至此三次握手完成。
三次握手的标记位分别是:SYN ,SYN、ACK,ACK
在三次握手只有第一个包是没有确认位(ACK)的,也只有第一个包是有同步位(SYN)的。
TCP会话的确认和重传
在真实抓包中,ACK的数值取决于要回复的数据包的序列号数值,再加上回包的字节长度,最后就会得出一个确认号。如下图所示, 在TCP会话建立完成后,不是每个数据包都会有回复。
如果总共发了3个包,每个数据包的字节长度都是1000的情况下,那么收包方回复的确认位为4000就代表了前面3个包都收到了
如果出现丢包的情况下,如上图所示,丢失了一个ack为2000的包,那么服务器会发送一个ack为2000的数据包到客户端,客户端收到后,会重发ack为2000的包,在服务器收到后,将会发回正确的ack4000.如果在重发过程中,响应时间过久会导致服务超时,断开TCP会话。
TCP会话的拥塞和流量控制
在每次发包中,会有一个窗口大小,相当于缓冲区,,其作用就是告诉对方,我下次可以接受的数据包只能有这么大。
TCP会话的终止-四次挥手:
主要使用标记位中的终止位(FIN)。
UDP不提供重传机制,占用资源小,处理效率高 。
一些时延敏感的流量,如语音、视频等,通常使用UDP作为传输层协议。
特性 | 传输控制协议(TCP) | 用户数据报协议(UDP) |
---|---|---|
连接类型 | 面向连接 | 无连接 |
传输可靠性 | 可靠传输(确认机制、重传) | 尽力而为的传输(无确认机制) |
流量控制 | 支持滑动窗口机制 | 无流量控制及窗口机制 |
典型应用 | HTTP、FTP、SMTP、SSH等 | TFTP、DNS、DHCP、流媒体、游戏等 |
应用层概述:直接为应用程序提供服务
DNS: Domain Name System,域名解析系统
域名是分层的,根域是.(小数点),我们注册(购买)的都是顶级域名。
顶级域名常见的有国家的,cn(中国)、kor(韩国)、ru(俄罗斯)。类型的有com(公司)、org,mil(军事)、gov(政府机关)、edu(教育)。
注册购买顶级域名后,该顶级域名下的所有分级域名下都可以使用。每一个小数点相对应每一级域名,baidu.com的baidu就是二级域名。
主机A需要访问到主机B时,如果是用IP访问,则不需要经过DNS服务器。如果使用域名访问,则必须要询问DNS服务器该域名指向的主机B地址在哪里,才能找到路由访问主机B。
主机A发送DNS请求给DNS服务器,收到DNS服务器的回答后,则知道主机B的地点在哪里,然后直接通过IP地址给主机B发送请求。
在抓包数据中,DNS请求包数据中的queries字段中会包含请求解析的域名,DNS回复包数据中,正常会包含有queries字段的数据,以及Answers字段数据。如果有其他域名别名的情况下,也会解析出域名。 type字段为域名解析的类型,图上所示的是A类型,还有CHAME(别名)类型,体现为该域名是谁的别名。
现大部分网站都已经强制使用https,主要因为http没有加密。用http协议下,数据不加密,可以通过转ascii编码转为url编码,再通过解码获取到信息。
在浏览网页时,会先发送一个请求(Get)给服务器,服务器就会回复数据包(一般不止一个)
post的包为搜索请求包。
在发送邮件时,会通过SMTP协议发送到SMTP服务器,SMTP服务器会将邮件发送到SMTP服务器,当用户登录邮箱时,会从使用pop3协议或imtp协议从SMTP服务器获取自己的邮件。
smtp、pop、imtp协议都是不加密的,可以通过抓包获取到账号密码、邮件内容,所以现在大部分服务器都必须用ssl加密端口连接。大部分邮件软件也会对邮件数据包进行加密(等级不高)。
地址可达,服务开启即可使用该协议进行远程管理。
串口号:与PC相连的端口号。
协议 | 备注 |
---|---|
FTP | File Transfer Protocol,文件传输协议 提供可靠的文件传输服务 具有认证、权限等功能 基于TCP协议 |
TFTP | Trivial File Transfer Protocol,简单文件传输协议 提供不可靠的文件传输服务 常用于网络设备的配置文件和系统文件传输 基于UDP协议 |
现阶段访问大部分服务都是使用域名的方式访问,都需要经过DNS服务器对域名解析过后,解析到地址后,地址可达,对应服务已开启的情况下即可访问。
分层思想:将复杂的流程分解为几个功能相对单一的子过程
后期排错时,可以根据层次排错。
图解: 普通用户只关心最终结果。 而网络工程师需要了解从生产到用户手上的整条链路, 当出现问题时,就可以根据分层来寻找出错的位置。
如果每个人的语言不一样,那么将无法进行交流,同理计算机也一样,所以这个时候就需要统一语言,从而进行交流。 现计算机都统一为TCP/IP协议。
我们现在的网络是Internet,该前身是ARPANET,ARPANET是美国当时以军事目的创造。
抓包只能抓到前4层(应用层,传输层,网络层,数据链路层)的数据包。
英文名称:
TCP/IP开发先于OSI,最终在市场上获得认可,目前所有厂商支持并使用。
数据发送,需要逐层向下传递数据,并添加相关头部或尾部的过程称为封装(打包)数据包封装不一定会从最高层(应用层)开始封装。IP封装在第三层,网络层,
数据接收,需要逐层向上传递数据,成为解封(拆包)
当路由器(或其他三层设备)收到一个IP数据包时,会查看数据包的IP头部中的目的IP地址,并在路由表中进行查找,在匹配到最优的路由后,将数据包扔给该路由所指的出接口或下一跳。
OSI把每一层数据称为PDU (Protocol Data Unit,协议数据单元)
TCP/IP根据不同层分别使用了段(Segment)、包(Packet)、帧(Frame)、比特(Bit)
从上往下封装过程
从下往上解封装过程
如果是交换机、路由器之类的设备收到后,会解封装到数据链路层或网络层,寻找到对应的目标后会重新封装并进行转发。
一个企业搭建的服务入过需要对外开放,必须要有一个公网IP(可以理解为在网络上的身份证,在公共网络的情况下,该身份证唯一),用户可以通过该IP地址找到你。
用户通过IP地址找到了你,但是你不知道该用户是需要什么,这时候端口就会起作用,比如把web服务提供给用户,在设置端口为80的情况下,用户只需要访问你的80端口就可以使用你所搭建的web服务。
一个IP对应的是一个设备,在个人或企业中,所拥有的的设备绝对不止一台,在搭建服务时,甚至会出现每一台单独主机提供不同的服务,这时候就需要用到端口转发。 比如主机A的80端口提供web服务,主机B的21端口提供FTP服务,这时候我们需要在公网IP的设备上添加端口转发,使得访问公网IP的不同端口时,指向不同主机的服务,该设置不要求端口一致,比如设置公网IP的81端口指向A主机的80端口,那么用户访问81端口就可以访问到A主机的81端口
域名作用在于简化IP地址,IP地址不方便记忆,这个时候就可以使用域名,通过域名解析(DNS)就可以访问到该IP地址. 比如我租用的IP为1.1.1.1,域名为test.com,这时候在域名服务商处添加域名解析,然后访问test.com时,实际访问的就是1.1.1.1。
负责设备的接入,比如PC、电话、打印机等 汇聚层:汇聚一个区域所接入设备 核心层:负责所有区域、设备的出口
因特网由ISP(Internet Service Providers)网络组成 ISP俗称运营商 提供互联网接入业务,信息业务和增值业务,例如电信、移动、联通,除此之外还有互联网公司,比如世纪互联公司、北京蓝汛通讯.国外的运营商有美国的AT&T、日本的软银集团。 除了运营商,互联网公司,还有科技网、教育网(edu)组成因特网 中国互联网络信息中心,每一段时间发布一些互联网的报告,网址cnnic.net.cn
可以拥有局域网,比如搭建一个企业网络。 但只能租用广域网,比如每年向运营商交钱。 中国法律规定只能运营商提供互联网服务。
个人见解:
个域网:临时性网络 局域网:单栋楼的整个网络 园区网:几栋,几十栋的区域的整个网络 城域网:覆盖整个城市的网络 因特网:覆盖整个世界的网络 无线局域网:覆盖信号范围内的网络 无线广域网:覆盖信号范围内的网络
该网络分类为网络覆盖范围大小来分类
目前大部分都是光纤+网线传输,一般情况下速度是一样的。 可以把带宽理解为水管,带宽就代表着该水管有多大,所对应的每秒可以流多少水。 或理解为车道数量,有多宽的车道,每秒就可以通过多少台车
带宽会影响延迟,在带宽被占用过多后会出现网络拥堵现象,可以理解为水管被堵了,或者车道被堵了,通过速度慢,需要等待 带宽越大,延迟越小 带宽越小,延迟越大 最终带宽=整条路上所有带宽最小的