【03】TCP/IP 参考模型

#了解TCP/IP参考模型,了解TCP/IP基本概念#

OSI模型由于比较繁琐,OSI没有得到很广泛的应用,反而是TCP\IP参考模型变成整个IP网络通信的基础

TCP/IP协议簇的来源

一、TCP/IP各层定义

二、工作在对应层的协议

三、应用层几个常见协议及对应端口号

四、主机到主机层的两个协议,UDP和TCP

应用要求可靠,选TCP,要求尽力而为,选UDP

TCP和UDP的对比

TCP报文格式

头部会加很多的字段,刚开始学习没必要记住每个字段的含义,循序渐进的时候需要了解记忆,抓包的时候抓到的是bit位,需要按照特定格式的byte长度转换,读懂协议的字段,才算了解数据通信的真谛

端口号的范围:1-65535

保留号码:1-1024 给wellknow的端口,如80给HTTP使用

当我们访问网页时,如果没有加端口号,则默认端口号为缺省的80端口

访问web网页时,输入地址不好记忆,域名好记忆,所以需要有dns服务器帮忙把域名解析成机器可以识别的ip地址

1、Source port是源端口,Destination port指目的端口

2、Sequence number指序列号

3、Acknowledge number指确认号

序列号和确认号是保障TCP协议可靠传输的根本

4、window窗口,checksum校验和,control bits控制位(6位,某一位置1,表示特殊用途)

UDP报文格式:与TCP相比少了序列号和确认号字段,在底层协议定义已经决定了UDP不可靠的特性

TCP连接建立:3次握手

TCP应用开始传输前,需要建立会话,基于会话传输数据;

会话建立过程:

A作为客户端与B服务端建立连接,需要重点关注3个字段 1、Sequence number序列号 2、Acknowledge number确认号 3、control bits控制位

A发送的第一个TCP握手消息,seq序列号是0(往后依次累加)ctl控制位SYN=1表示要建立TCP 3次握手了

B发送的第一个TCP握手消息,seq序列号是0(往后依次累加),ack号=1是用来告诉A,A发送的seq为0的数据已经收到,第二个目的是请求A的下一个数据(seq为1),控制位置位SYN和ACK位

A发送的第二个TCP握手消息,seq序列号是1,ack号=1是用来确认B发送的seq为0的数据已经收到,控制位置位ACK

由此建立起3次握手过程

TCP连接断开:四次握手

A:发送seq=100

B:发送seq=300 ack = 101(确认A的seq=100的数据已经收到)

A:发送seq=101 ack=301 ctl=FIN,ACK//发送FIN请求断开连接,FIN是finish的意思

B:发送seq=301 ack=102 ctl=ACK//发送ACK,确认已经收到消息

B:发送seq=301 ack=102 ctl=FIN,ACK//发送FIN请求断开连接

A:发送seq=102 ack=302 ctl=ACK//确认收到B的消息

TCP和UDP的端口号:

源端口随机分配,目的端口使用知名端口

应用客户端使用的源端口一般为系统未使用的,且大于1023

目的端口号为服务器端应用服务的进程。如telnet为23,http为80

A和B建立3次握手时,B作为数据接收方,有义务给A通告win(窗口值)值,win=3意味着B的缓冲区是3,最多可以一次性发送3个数据,再等确认

A发送3个数据后,把B缓冲区填充满了,B拿走1个数据处理后,回复A ack号码和win=1值

win值的大小,决定了在收到确认前可以发送的字节数,窗口值根据B的缓冲区的大小在不断变化,所以才成为滑动窗口

五、因特网层

因特网层包括的协议:IP、ICMP、ARP等协议

IP协议报文格式

Version:版本4或者6

Header Length:IP头的长度

Priority&Type of Service:用来做Qos

Total Length:报文总长度

Identification、Fragment offset:做分片

Flags:特殊置位标志

Time to live(TTL):存活时间,防环,每转发一次,➖1,当TTL=0时,路由器会给源路由器发送ICMP报错消息,并丢弃数据包

Protocal:协议号,表示DATA里传输的协议类型,类似于内有“TCP或UDP”的报文一份

Header checksum:头的校验和,判断数据在传输过程中有没有出现差错,或者有没有被损坏

Source IP Address:源IP地址

Destination IP Address:目的IP地址

Options:可选字段

ARP协议

ARP协议:地址解析协议

通过广播:who has 192.168.1.2?,其中某交换机会回复自己的MAC,目的MAC为全F则为广播

并把IP地址和MAC做一个对应

缺点:广播浪费资源,不可靠不安全,无确认机制,可能被黑客伪造ARP消息(回复自己的MAC和别人的IP,以此截获发往别人IP的消息),称为ARP欺骗

IPv6版本已经取消掉了ARP协议

电脑查看ARP消息,可以使用arp -a,查看IP对应的MAC地址

因特网层工具

Ping工具软件(程序):常用来探测本地到远端IP地址可达性轻量化工具,是一个软件程序,底层使用ICMP协议,收到对方回应,证明数据往返通路没有问题

Traceroute/Tracert:不同的网络设备使用的命令不同,找出从本地到目标节点之间穿越的路由器的IP地址,帮助分析数据行走路径

两个工具都是网络分析和故障排错的常用工具

例子

从宏观到微观,从抽象到具象

PC构造一个数据帧,PC的HTTP进程,HTTP是基于TCP开发应用

传输层使用TCP,所以会添加TCP的头部,写入源端口号(随机产生),目的端口号:对端服务器侦听的端口号(缺省为80),若服务器自定义端口号我们需要事先明确

因特网层,添加IP头,写入源地址(PC IP),目的地址(Server IP),协议号 6 表示IP头后面跟着一个TCP协议的报文

以太网层,添加以太网帧头,写入源MAC(PC的网卡MAC),目的MAC(PC的网关IP地址所对应的MAC,即R1的GE0/0/0口的MAC,初始情况下可能没有这个目的MAC,需要先发送ARP请求,获取目的MAC地址),类型0x0800 表示后面跟着的是IPv4的报文、

数据包发送给给R1了

R1还原成帧,查看帧头的目的MAC地址,正好是自己,从类型判断是IPv4的数据,就把以太网帧头剥掉,把后面的数据交给自己的IPv4协议栈去处理

R1的IPv4协议栈处理包数据的时候,查看IP头的目前IP地址是192.168.2.1,不是自己的任何一个接口的IP地址,证明数据包不是发给自己的,就拿着目的IP地址去自己的路由表中查找,发现数据包需要从R1的GE0/0/1出去,发送给R2的GE0/0/0口

R1会给数据添加新的以太网帧头,源MAC地址变为R1的GE0/0/1的地址,目的MAC地址变为R2的GE0/0/0口的MAC地址

R2收到数据后,查看目的MAC是自己的GE0/0/0口,继续拆开数据包给IP协议栈

IP协议栈查看目的IP不是自己,但是是本地的直连网段

于是R2重新包裹上新的以太网帧头,源MAC为R2的GE0/0/1的MAC,目的MAC为Server的MAC,数据帧发送给Server

Server收到数据帧后,查看目的MAC是自己,就把报文以太网帧头拆掉,交给自己的IP协议栈处理,IP协议栈查看目的IP是自己,就把IP头拆掉,根据协议号6确认后面是TCP的头,把后面的部分交给TCP协议栈处理,TCP协议栈发现目的端口号是80端口,于是看了下本地TCP的端口是否开启,确认本地80端口开启后,且HTTP的进程在侦听,会把TCP头剥掉,把数据交给HTTP进程去处理。这样就完成了整个的数据通信过程。

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值