TCP/IP体系相关知识点

Android中网络TCP/IP体系介绍

我们在开发应用的时候都会使用到网络,但数据是怎么传递到服务器,服务器又是怎么把数据返回到客户端的呢,接下来我们就一起来看看里面的具体流程。
  • TCP/IP体系在传输数据中可以分成四个层级:应用层、传输层、网络层、链路层。在传输顺序上:客户端—->应用层—->传输层—->网络层—->链路层—->网络层—->传输层—->应用层—->服务器;下面就开始说说具体每一层都需要干什么事情:
  • 应用层:常用的Http 通过Http协议设置相关数据,比如请求行,请求头,请求方法,请求体,请求参数等等(Https:Http+SSL,是在应用层和传输层之间对请求数据进行加密处理,和Http相比安全有证书的验证)
  • 传输层:传输层是面向通信的最高层,也是用户功能的最底层。复用和分发,在发送端多个进程可复用一个传输层,在接收端为不同主机的不同进程进行分发数据。其中使用TCP协议、UDP协议等。
  • 网络层:使用IP协议,这里面的IP协议不是指IP地址,IP协议包含IP地址和计算机的MAC地址,IP协议能够通过IP地址和MAC地址准确的找到你需求请求的服务器
  • 链路层:就是我们平时接触的网卡和网卡的驱动程序等属于很底层的东西,这部分就不做详细介绍了,想具体了解可以自行查找相关资料。

接下来介绍下各个层级是如何工作的:

  • 应用层:这里主要说下Http协议,Http是超文本传输协议。是一个基于请求与响应模式的、灵活、快速、无状态的(协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快)、无连接(限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间)的应用层的协议,常基于TCP的连接方式。Http请求包括三个部分:请求行、消息报头、请求正文 Http响应包括:状态行、消息报头、响应正文
    个人认为Http协议就是对请求数据或者响应数据进行封装,请求行 = 方法 [空格] 请求URI [空格] 版本号 [回车换行] 包含请求方法,请求的资源地址,请求协议以及版本信息;请求头中包含各种Xxxx:xxxx的头部信息;请求体里面一般使用POST方法时会用到
    请求模式:
    这里写图片描述
    同样响应模式和请求模式也是差不多的,也是对反馈出来的数据进行封装 状态行 = 版本号 [空格] 状态码 [空格] 原因 [回车换行]
    响应模式:
    这里写图片描述

    传输层:字面意思就是数据的传输,其实是一台的计算机的内部信息传输使用,在http1.1版本里面TCP可以被复用,意思就是一个计算机里面可以有多个进程,多个进程共用一个TCP进行数据的传输,TCP通过识别端口号来分辨不同的进程。经常接触到的其实是TCP、UDP协议进行传输。TCP:对Http或者Https协议中的请求或者响应数据进行有序的分成多个数据包进行传递,TCP会用到我们熟悉的三次握手机制进行和服务器之间的确定以保证数据的准确性。如客户端A向服务器B请求数据的时候三次握手过程:第一次握手的时候是A给B发送SYN=1(代表请求连接)、随机的一段序列号seq=1234567,B收到A发送过来的数据后通过SYN=1知道A想和它进行连接;第二次握手:B收到A发过来的连接请求后会返回给A ack number=1234567(seq)+1(确定进行连接)同时也会随机生成一段序列号seq=2345678;第三次握手:A收到B发送过来的数据进行解析确认:第一次发送的seq码+1是否等于B向A发送过来的acknumber,如果等于的话也会发送acknumber=2345678+1给B,B收到后也会再次确认A发送过来的acknumber。这整个过程也就是TCP的三次握手机制,这种机制能是数据发送的准确性以及保证数据的不丢失。刚刚提到过UDP,这个协议和TCP相比就不会进行三次握手确认,A不会管B在不在线,直接就发送过去了,这样不能够保证数据的准确性以及会不会丢失,当B不在线的时候就会产生数据的丢失,所以TCP是面向连接的而UDP不是面向连接的;TCP是以字节为单位的而UDP是以数据包(每个不超过64K,所以不能发送大量的数据一次)的TCP要进行数据的验证,发送前还需要进行连接确认(三次握手)所以速度向比不上UDP,UDP适合及时性强,数据量短小,频繁的通信模式如QQ。

    网络层:过程:WiFi上的计算机1 -> 路由WiFi接口 -> 路由以太网接口 -> 以太网上的计算机2,就是两台计算机之间的通信层,这个过程有些类似送信一样。在连接层,我们的一个帧中只能记录SRC和DST两个地址。而上面的过程需要经过四个地址 (计算机1,WiFi接口,以太网接口,计算机2)。显然,仅仅靠连接层协议无法满足我们的需要。由于连接层协议开发在先,我们无法改动连接层协议,只能在连接层的数据(payload),也就是信纸内部下功夫了。IP协议应运而生。计算机1,路由器和计算机2都要懂得IP协议。当计算机1写信的时候,会在信纸的开头写上这封信的出发地址和最终到达地址 (而不是在信封上),而在信封上写上要送往邮局。WiFi网的邮差将信送往邮局。在邮局,信被打开,邮局工作人员看到最终地址,于是将信包装在一个新的信封中,写上出发地为邮局,到达地为计算机2,并交给以太网的邮差,由以太网的邮差送往计算机2。(IP协议还要求写如诸如校验等信息,交通状况等信息,以保护通信的稳定性。)在连接层,邮差只负责在本社区送信,所以信封上的地址总是“第一条街第三座房子”或者说“中心十字路口拐角的小房子”这样一些本地人才了解的地址描述,这给邮局的工作带来不便。所以邮局要求,信纸上写的地址必须是一个符合官方规定的“邮编”,也就是IP地址。这个地址为世界上的每一个房子编号(邮编)。当信件送到邮局的时候,邮局根据邮编,就能查到对应的地址描述,从而能顺利改写信封上的信息。每个邮局一般连接多个社区,而一个社区也可以有多个邮局,分别通往不同的社区。有时候一封信要通过多个邮局转交,才能最终到达目的地,这个过程叫做route。邮局将分离的局域网络连接成了internet,并最终构成了覆盖全球的互联网。

链路层:这个层级主要就是一些硬件相关的东西:网卡、网线等等,这里就不做过多的阐述了。

这里就是对TCP\IP体系的大概介绍,帮助自己或者大家简单的认识下客户端和服务器之间的通信过程,以及我们经常听说的HTTP、TCP、IP等这些在通信过程中的作用是什么,如果有什么说的不对的地方还请大家指正,谢谢。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值