网络基础TCP/IP协议
我们通常使用的网络是在TCP/IP协议族的基础上运作的,HTTP属于它内部的一个子集。
HTTP是一个基于TCP/IP通信协议来传递数据。(HTML 文件, 图片文件, 查询结果等)
网络基础TCP/IP
通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。HTTP属于它内部的一个子集。
TCP/IP协议族
计算机与网路设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标,由哪一边先发起通信,使用哪种语言进行通信,怎样结束通信等规则都需事先确定。不同的硬件,操作系统之间的通信,等都需要一种规则,我们把这种规则称之为协议(protocol)
TCP/IP是互联网相关的各类协议的总称
TCP/IP的分层管理
TCP/IP协议族里最重要的一点是分层。TCP/IP协议族按层次分可分为4层:应用层,传输层,网络层和数据链路层。
分层的好处是什么呢?如果互联网只有一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。分层之后,只需要把变动的层次替换掉。把各层之间的接口部分规划好之后,每个层次内部的设计可自由改动。
TCP模型图
应用层
应用层决定了向用户提供应用服务时通信的活动。
TCP/IP协议族内预存了各类通用的应用服务。如:FTP(File Transfer Protocol,文件传输协议)和DNS(Domain Name System,域名系统),HTTP协议也属于网络层。
表示层
表示层:将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式;主要负责数据格式的转换,确保一个系统的应用层信息可被另一个系统应用层读取
会话层
会话层:负责建立和断开通信连接(数据流动的逻辑通路),记忆数据的分隔等数据传输相关的管理
传输层
传输层对上层应用层,提供处于网络连接中的两台计算机直接的数据传输。
这一层有两个不同性质的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。
网络层(网络互连层)
网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。这层规定了通过怎样的路径(即传输路线)到达对方计算机,并把数据包传给对方。
如果与对方计算机之间通过多台计算机或网络设备进行传输时,网络层的作用就是在多个选项内选择一条传输路线。网络层的协议有IP,
ICMP(Internet Control Message Protocol,Internet控制报文协议,用于在IP主机、路由器之间传递控制消息。),
IGMP(互联网组管理协议,用于IP主机向任一个直接相邻的路由器报告他们的组成员情况)
链路层(数据链路层,网络接口层)
数据链路层用来处理连接网络的硬件部分。包括控制操作系统,硬件的设备驱动,NIC(Network INterface Card,网络适配器,即网卡),及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围内。
TCP/IP通信传输流
利用TCP/IP协议族网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则从链路层往上走。
物理层
物理层:负责0、1 比特流(0/1序列)与电压的高低、逛的闪灭之间的转换
规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性;该层为上层协议提供了一个传输数据的物理媒体。只是说明标准
在这一层,数据的单位称为比特(bit)
用http举个栗子:
- 发送端的客户端在应用层(Http协议)发出一个想看某个Web页面的http请求;
- 为了传输方便,在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。
- 在网络层(IP协议),增加作为通信目的的MAC地址后转发给数据链路层。这样整个发往网络的通信请求准备齐全。
- 接收端的服务器在数据链路层接收到数据,按照往上层发送,一直到应用层。直到传输到应用层,才算真正接收到客户端发送过来的Http请求。
与HTTP关系密切的协议:IP、TCP、DNS
负责传输的IP协议
按照层次分,IP(Internet Protocol)网际协议位于网络层。
IP协议的作用:把各种数据包传送给对方。若要保证确实传送到对方那里,则需要满足割裂条件。其中两个重要的条件是IP地址和MAC地址(Media Access Control Address).
IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变化,但MAC地址基本上不会改变。
使用ARP协议凭借MAC地址进行通信
IP间的通信依赖MAC地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是通过多台计算机和网路设备中转才能连接到对方。那么在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。此时,会采用ARP协议(Address Resolution Protocol)。
**ARP是一种用来解析地址的协议,根据通信方的IP地址就可以反查出对应得MAC地址。
各层之间传输数据
TCP协议确保可靠性
TCP位于传输层,提供可靠的字节流服务。
字节流服务(Byte Stream Service):为了便于传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。
可靠的传输服务:能够吧数据准确可靠的传给对方。
TCP协议为了更容易传送大数据才把数据分割,且TCP协议能够确认数据最终是否送达到对方。
为了准确无误的将数据送达目标处,TCP协议采用了三次握手(three-way handshaking)策略。
用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志——SYN(synchronize)和ACK(acknowledgement).
发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带有ACK标志的数据包,代表'握手'结束。
(若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包)
第一次握手
客户主动(active open)去connect服务器,并且发送SYN 假设序列号为J,
服务器是被动打开(passive open)
第二次握手
服务器在收到SYN后,它会发送一个SYN以及一个ACK(应答)给客户,
ACK的序列号是 J+1表示是给SYN J的应答,新发送的SYN K 序列号是K
第三次握手
客户在收到新SYN K, ACK J+1 后,也回应ACK K+1 以表示收到了,
然后两边就可以开始数据发送数据了
负责域名解析的DNS服务
DNS(Domain Name System)服务是和HTTP协议一个位于应用层的协议。
它提供域名到IP地址之间的解析服务。
(我们通常使用主机名或域名来访问某个网站,如www.baidu.com,而不是之间通过IP地址来访问)
DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。
下图为IP协议,TCP协议,DNS服务在使用HTTP协议通信过程中各自发挥的作用
各协议的职责