"传输层"的功能,就是创建"端口到端口"的通讯。相比之下,"网络层"的功能是创建"主机到主机"的通讯。只要肯定主机和端口,咱们就能实现程序之间的交流。所以,Unix系统就把主机+端口,叫作"套接字"(socket)。浏览器
如今,咱们必须在数据包中加入端口信息,这就须要新的协议。最简单的实现叫作UDP协议,它的格式几乎就是在数据前面,加上端口号。服务器
"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。而后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以网络
太网数据包之中的,因此整个以太网数据包如今变成了下面这样:架构
UDP协议的优势是比较简单,容易实现,可是缺点是可靠性较差,一旦数据包发出,没法知道对方是否收到。socket
为了解决这个问题,提升网络可靠性,TCP协议就诞生了。这个协议很是复杂,但能够近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。网络传输协议
若是有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。spa
所以,TCP协议可以确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。图片
TCP数据包和UDP数据包同样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上能够无限长,可是为了保证网络的效率,一般TCP数据包的ip
长度不会超过IP数据包的长度,以确保单个TCP数据包没必要再分割。资源
"应用层"的做用,就是规定应用程序的数据格式。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为普遍的一种网络传输协议,全部的WWW文件都必须遵照这个标准。
HTTP是一个基于TCP/IP通讯协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通讯。
HTTP协议工做于客户端-服务端架构为上。浏览器做为HTTP客户端经过URL向HTTP服务端即WEB服务器发送全部请求。
咱们已经知道,网络通讯就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通讯。数据包的结构,基本上是下面这样
发送这个包,须要知道两个地址:
* 对方的MAC地址
* 对方的IP地址
数据包的目标地址,实际上分红两种状况:
场景 数据包地址
同一个子网络 对方的MAC地址,对方的IP地址
非同一个子网络 网关的MAC地址,对方的IP地址
DNS协议能够帮助咱们,将这个网址转换成IP地址。
咱们要判断,这个IP地址是否是在同一个子网络,这就要用到子网掩码。