计算机网络分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
网络层有IP协议、ICMP协议、ARP协议、RARP协议、BOOTIP协议。
传输层有TCP协议、UDP协议。
应用层协议有FTP协议、HTTP协议、TELNET协议、SMTP协议、DNS协议等。
socket
为了实现以上的通信过程而建立用来通信的管道,其真实的代表是客户端和服务器端的一个通信进程,双方进程通过socket进行通信,而通信的规则采用指定的协议,socket只是一种连接模式,tcp、udp是两个最基本的协议,很多其他协议都是基于这两个协议
TCP(Transmission Control Protocol,传输控制协议)
TCP是面向连接的协议,在收发数居前,必须和对方建立可靠的连接,一个TCP连接必须要经过三次对话才能建立起来。
TCP三次握手建立连接过程
1.主机A通过向主机B发送一个含有同步序列号的标志为的数据段给主机B,向主机B请求建立连接,通过这个数据段,主机A告诉主机B两件事:我想要和你通信,你可以用哪个序列号做为起始数据段来回应我。
2.主机B收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了,你要用哪个序列号做为起始数据段来回应我。
3主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B的数据段,我已经收到回复,我现在要开始传输实际数据了。
TCP断开连接的4次步骤
1.当主机A完成数据传输后,将控制为FIN置1,提出停止TCP连接的请求。
2.当主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
3.由B端再提出反方向的关闭请求,将FIN置1
4.主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束。
UDP(User Data Protocol,用户数据协议)
1.UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地抓去来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
2.由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
3.UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
4.吞吐量不受拥挤控制算法的调节,只手应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
5.UCP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表
6.UDP是面向豹纹的饿,发送放的UDP对应用程序交下来的报文,在添加手部后就向下交付给IP层。既不拆分也不合并,二是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
我们经常使用ping命令来测试两台主机之间TCP/IP通信是否正常,其实ping命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息即使反馈回来,那么网络就是通的。
HTTPS
1.服务器用RSA生成公钥和私钥
2.把公钥放在证书里发送给客户端,私钥自己保存
3.客户端首先向一个权威的服务器检查证书的合法性,如果证书合法,客户端产生一段随机数,这个随机数就做为通信的密钥,我们称之为对称密钥,用公钥加密这段随机数,然后发送到服务器
4.服务器用密钥解密获取对称密钥,然后双方就以对称密钥进行加密解密通信了。
HTTPS相对于HTTP有哪些不同呢,其实就是在HTTP跟TCP中间多了一层加密层TLS/SSL,SSL是个加密套件,负责对HTTP的数据进行加密,TLS是SSL的升级办,现在提到HTTPS加密套件基本是指的TLS。
HTTP协议组成
第一部分Request line:
POST http://www.baidu.com http/1.1
第二部分Request header:
Accept:image/gif,image/jpeg
Accept-Language:en-us
...
第三部分Body
a=1&b=2