TCP/IP五层模型:
应用层:负责应用程序之间的数据沟通(两个进程之间数据格式);HTTP / FTP
传输层:负责应用程序之间的数据传输(传输两端的描述 ---- 端口的描述);TCP/ UDP
网络层:负责地址管理与路由选择(通过IP地址描述这条数据的两端主机);IP 路由器
数据链路层:负责相邻设备之间的数据传输(通过MAC地址描述两个相邻设备);ETH 交换机
物理层:负责物理光电信号的传输;以太网协议,集线器
网络传输流程图
同一个网段内的两台主机进行文件传输
两台计算机通过TCP / IP 协议通讯的过程
跨网段的主机的文件传输,数据从一台计算器到另一台计算机传输过程中要经过多个或多个路由器
数据包封装和分用
1.不同的协议层对数据包有不同的称谓,在传输层叫作段,在网络层叫做数据报,在数据链路层叫做帧。
2.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部header,成为封装
数据的封装与分用
对于应用层的封装来说,有两种方法:
1、设置Appl首部。“用户数据”就是你实际要发送的数据,比如我们打算发送一个字符串:”asdfgh”,Appl首部就是你自己设计的一个包结构,比如在Appl首部里面设计一个4个字节的int数据,用来表示后面内容的长度:那么当你发送”asdfgh”的时候,Appl首部里面就是这个字符串的长度6,接收端先接受4个字节,得到长度,再按照长度接受内容。
2、另一种方法是在用户数据末端加上“结束标志”,http协议就是这么干的,用**\r\n\r\n**表示一段内容结束(当然你也可以选择其他的特定字符作为结束标志)。那么当你发送”asdfgh”的时候,其实就是发送”asdfgh\r\n\r\n”,接收端接受数据,遇到\r\n\r\n结束接受一段数据。
分用