TCP/IP 协议

简单说明:

一个主机的数据经过哪些过程发送到另一个主机上
采用四层结构:应用层、传输层、网络层、链路层

总体流程:

在这里插入图片描述
http发送一个请求,应用层、传输层、网络层、链路层会一次对请求进行包装并携带对应的首部,最后会在链路层生成以太网数据包,数据包会通过物理物质传输到对方主机,接收到数据包之后,会采用对应的协议进行拆包,然后应用程序将数据进行处理

物理介质:

电信号(0和1)的传输方式,比如说光缆、无线电波等,物理介质的不同决定了
传输的速率距离等的不同

链路层:

网络通讯中发送数据是根据0和1已字节为单位进行分组,并且标识每一组电信号的特征按照顺序发送,以太网协议规定一组电信号是一个数据包,一个数据包称为一帧,

完整的以太网数据包包括:首部 数据 尾部

  • 首部:固定14个字节,包含目标的MAC地址、源MAC地址和类型
  • 数据:大于等于46个字节,小于等于1500个字节,若传输的数据过长,可以分成多个帧发送
  • 尾部:固定4个字节,确认数据包在传输过程中是否损坏
  • 以太网如何区分接收方的身份:以太网规定接入网络的设备必须安装网卡,数据包必须从一个网卡传送到另一个网卡,而网卡地址是数据包首部的MAC地址,MAC地址是每个网卡的身份标识,全球唯一,MAC采用十六进制标识,共6个字节,前三个是厂商编号后三个是网卡流水号(2C-9F-3E-12-3G-34)以太网采用广播的形式发送给子网内的所有主机,子网会读取首部的MAC地址,然后和自己的MAC地址进行对比,若相同则处理,若不同则丢弃

链路层作用:

对电信号进行分组并形成特定意义的数据帧,然后以广播的形式通过物理
介质发送到接收方

网络层:

有三个协议:IP协议、ARP协议、路由协议

IP协议

解决问题:

MAC地址只和厂商有关,无法通过MAC地址判断主机是否属于同一个
子网;有IPv4和IPv6,IPv4是一个32位的地址,采用4个十进制数字表示,分为两个部分前面部分代表网络地址,后面代表主机在局域网中的地址,若两个IP地址在同一个子网内,则网络地址一定相同,可以根据IP地址和子网掩码通过按位与运算后得到网络地址,由于发送者和接收者的IP地址都是已知的,所以可以通过IP地址中的子网掩码对两个IP地址进行运算符运算后判断是否在同一个子网

ARP协议:

地址解析协议,能够根据IP地址获得MAC地址的一个网络层协议

解决问题:

获取接收者的MAC地址

原理:

每个主机接收以太网数据包之后,拿到标头中的IP地址和自己的IP地址进行比较
,若相同则返回自己的MAC地址,若不同则丢弃数据包,ARP会接收返回的消息,以此来确定MAC地址,同事ARP还会将返回的MAC地址和对应的额IP地址存放到本机的ARP缓存中保存一段时间,下次请求可以直接查询ARP缓存,CMD中输入 arp -a可以查看本机缓存的ARP数据

路由协议:

说明:

通过ARP协议原理中可以看出ARP的MAC地址只局限于同一个子网中,因此网络层引入了路由协议,首先通过IP协议判断是否是同一个子网,若是则进行操作,若不是以太网会将数据包转发给本子网的网关进行路由,网关是互联网中子网和子网之间的桥梁,所以网关会进行多次转发,最终找到目标IP的子网,然后通过ARP获取MAC,通过广播形式将数据包发送给接收方,完成这个路由协议的物理设备是路由器

IP数据包:

包含首部和数据

  • 首部共20个字节,包含目标的IP地址和源IP地址,目标IP地址是网关路由的线索和依据
  • 数据长度为65515字节,理论上IP数据包的总长度是65535,但是由于以太网数据包最大为1500个字节,所以若超过这个大小,就要对IP数据包就行分割,多帧发送

网络层作用:

定义网络地址,区分网段,MAC寻址

传输层:

说明:

链路层定义了主机的MAC地址,网络层定义了IP地址,这两个地址就可以将数据包从一个主机发送到另一个主机上,但是实际上是从一个主机的应用程序发送到另一个主机的应用程序,但是每台电脑都有很多应用程序,所以无法确定发送到主机的哪个应用程序,传输层引入了UDP协议,UDP协议定义了端口,同一个主机上的每个应用程序都要指定一个端口号,并规定网络中传输的数据包也必须加上端口号,这样就可以找到对应的应用程序

UDP数据包包括首部和数据

  • 首部:8个字节,包括源端口和目标端口
  • 数据:65527个字节,
  • 说明:UDP协议没有确认机制,数据包一旦发出,无法确定是否接收到,可靠性差,所以TCP协议诞生了,TCP是传输控制协议,它是一个有确认机制的UDP协议,每次发送数据包都要求确认,若一个数据包丢失,接收不到确认,那么就会重新发送这个数据包,TCP协议建立了三次对话的确认机制,经过三次对话之后,会向主机发送数据,而UDP不建立连接直接发送数据,TCP虽然保证了数据不被丢失,但是消耗资源较多,传输速度慢,TCP数据包与UDP一样,都是由首部和数据组成,但是TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不超过IP数据包长度,确保TCP数据包不再分割

传输层作用:

定义接口,使用端口完成应用程序通信

应用层:

传送到应用程序的数据是字节流,不能被程序识别,操作性差,因此应用层定义了协议规范数据格式,比如说HTTP,FTP等,HTTP举例:
在这里插入图片描述
在Resquest Headers 中,Accept 表示客户端期望接收的数据格式,在 Response Headers 中,ContentType 表示服务端响应的数据格式,这里定义的格式,一般是和 Resquest Headers 中 Accept 定义的格式是一致的。
有了这个规范之后,服务端接收到数据之后,就能正确解析数据,请求处理完之后,再按照客户端要求的格式返回,客户端接收到数据之后,按照服务端返回的格式进行解析

应用层作用:

定义数据格式并按照对应格式进行解析数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值