OSI网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
一、TCP/IP HTTP Socket
https://blog.csdn.net/Pk_zsq/article/details/6087367
IP协议对应于网络层,TCP协议对应于传输层,HTTP协议对应于应用层
1.TCP/IP
TCP/IP是一个 协议簇,包括应用层,传输层,网络层,网络访问层,每一层包括很多协议,因为TCP、IP协议是两个很重要的协议,就用它两命名,主要解决 数据如何在网络中传输
2.HTTP
HTTP协议,主要解决如何 包装数据
3.Socket
Socket本身并不是协议,是对TCP/IP协议的 封装,是一个调用接口(API)
通过Socket,才能使用TCP/IP协议,
就像操作系统会提供标准的编程接口,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口
二、TCP三次握手、四次挥手
https://github.com/jawil/blog/issues/14
TCP是 面向连接的协议,在收发数据前,必须和对方建立可靠的连接
TCP建立连接为什么是三次握手?是为了满足在不可靠信道上可靠地传输信息,三次通信是理论上的最小值
三次握手可以防止以下情况的发生:
client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段,但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求,于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了,由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据,但server却以为新的运输连接已经建立,并一直等待client发来数据,server的等待浪费了资源
当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,断开TCP的连接,需要四次挥手
三、TCP与UDP的区别
TCP是 面向连接的、可靠的数据流传输,发送数据前需要先建立连接,求安全
TCP可以处理乱序,丢失的数据包(丢失后重发),拥挤情况自动调整传输速率
UDP不是面向连接的、不可靠的数据流传输,发送数据前不需要建立连接,求速度
TCP适合用于网页,邮件等,UDP适合用于视频,语音广播等