作为‘纯’前端出身,缺少后端功底小白,以前碰到http,总想着能躲就躲,最近在学习node的时候,遇到网络编程那一块知识,遇到了很多眼熟却不'自知'的名词,大约就是tcp,udp之类,心想这次大概是躲不过去了,翻阅了许多文章与书籍,做一总结,以示重要性!!!
Tcp/Ip协议族
互联网相关联的协议集合起来统称TCP/IP
TCP/IP协议族的分层管理
TCP/IP协议族按层次分别有4层:应用层、传输层、网络层和数据链路层
应用层
应用层决定了向用户提供应用服务是的通信活动。比如前端最常用的FTP和DNS以及HTTP协议都在该层
传输层
传输层对上层的应用层,提供处于网络连接中的两台计算机的数据传输,有两个不同性质却很重要的的协议:TCP和UDP
网络层
网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。网络层在传输过程中所起到的作用就是在众多的路线中选择一条最优路线
链路层
链路层用来处理链接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC、以及光纤等物理可见部分。总结就是硬件上的范畴均属于链路层的作用范围之内
以上是TCP/IP协议族的概总,再来说说tcp跟IP协议跟TCP/IP协议族的关系
负责传输的Ip协议
Ip协议位于网络层,作用是把各种数据包传送给对方。包括Ip地址和MAC地址。IP地址指明了节点被分配的地址,MAC地址是指网卡所属的固定地址
确保可靠行的TCP协议
首先TCP协议位于传输层,提供可靠的字节流服务。所谓的字节流服务就是为了方便传输将大数据块分割成以报文段为单位的数据包进行管理。而有名的三次握手策略则保证了可靠性
http协议
http协议(超文本传输协议)位于应用层,用于客户端与服务端之间的通信,是web联网的基础,在客户端的职责是生成针对目标web服务器的的HTTP请求报文,在服务端则是对web服务器请求的内容进行处理
TCP和UDP的区别
TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。
总结
实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。