click – > 带着问题学习~
1. TCP/IP 族
协议 : 计算机与网络设备通信,双方就必须要基于相同的规则,我们把这种规则称为协议。(前端与后端的接口约定也可以理解为一种协议,不过是比较小范围内的协议)
TCP/IP : 协议中存在各种各样的内容,从电缆的规格到ip地址的选定方法,双方建立通信的顺序,以及web页面的展示方法。这种把所有互联网协议关联起来的集合叫做TCP/IP
也有说法认为TCP/IP指的就是TCP协议和IP协议
还有说法认为TCP/IP 是IP协议相关联的协议的集合。
2. TCP/IP的分层管理
TCP/IP族中很重要的一点就是分层管理,这和我们编程时候的思想是很相像的,比如Android开发中需要用到开源库,会把库封装一层留出接口,以达到可以随时替换库而不影响业务代码的目的。
TCP/IP分为4层,即应用层、传输层、网络层、链路层。
应用层 : 应用层决定了向用户提供服务时通信的活动。(比如ftp、tlent、dns)http协议也属于应用层。
传输层 : TCP UDP,提供两台计算机之间的数据传输。
网络层 : 网络层用来处理网络上流动的数据包,数据包是网络传输中的最小数据单位。该层规定了通过怎样的路径到达对方计算机,并把数据包传输给对方。
链路层 : 用来处理链接网络的硬件部分。
3. TCP/IP通信传输流
利用TCP/IP族进行数据传输时会通过分层的顺序与对方进行通信。发送端从应用层向下走,接收端则向上走。
发送端在传输数据时经历过每一层都会增加相应层的首部,再传输到服务器端之后经历的每一层都会消去响应的首部。这叫做封装。
(个人感觉有点像key-value的结构呢,首部对应key,数据包对应value,通过首部key拿到value之后再继续循环直到传输至应用层,服务器端接收到HTTP请求。)
用HTTP协议举例,想通过HTTP协议来访问某个web页面。
应用层发出HTTP请求
传输层(TCP协议)将数据(HTTP请求)切割成为数据包进行传输(期间经历给每个数据包按顺序打上标记,带上端口号转发给网络层)
网络层(IP协议)负责寻找链接对方计算机的路径,增加作为通信目的地的MAC地址转发给链路层。
链路,接收端的链路层收到数据后一步步向上转发,一直到应用层,当传输到服务器端应用层,服务器才算真正的接收到了客户端发送的HTTP请求