关于TCP/IP的各种协议 7

应用层:DNS HTTP HTTPS Session Cookie
传输层:TCP UDP
网络层:IP ICMP
数据链路层:ARP RARP


ARP RARP
负责IP地址和物理地址的解析和逆解析

地址解析协议ARP:
根据IP地址解析成物理地址(MAC地址)的协议,是建立在相互信任的基础上的,解决网络层和数据链路层的衔接问题。

具体来说,ARP将网络层使用的IP地址解析成数据链路层的MAC地址。

为什么:
在同一局域网中,主机通信,可以通过物理地址(MAC地址)定位,然后发送数据。
但在网络层和传输层中,主机是通过IP地址定位的,发送的数据只包含目标主机的IP地址,没有物理地址。


IP协议 IP地址
IP协议提供IP地址
IP地址让互联网上每一个网络和每一台分配一个逻辑地址,屏蔽物理地址的差异。

构成:
网络ID和主机ID
网络 ID 的位数直接决定了可以分配的网络数量。
主机 ID 的位数则决定了网络中最大的主机数量。

子网划分:
子网划分是将 IP 地址的主机 ID 部分划分为子网 ID 和主机 ID。其中,子网 ID 用来寻找网络内的子网,主机 ID 用来寻找子网中的主机。
子网掩码则是用来指明地址中多少位用于子网 ID,保留多少位用于实际的主机 ID。


ICMP
为什么:
为了了解数据包在传输的过程中在哪个环节出现了问题,就需要用到 ICMP 协议。ping 命令就是应用。

功能:
侦察远端远端是否存在、建立及维护路由资料、重导资料传输路径、资料流量控制。


TCP
是一种面向连接的、可靠的、基于字节流的传输层通信协议。

提供可靠性:
三次握手:建立连接
四次挥手:断开连接
数据拆分:拆成TCP认为最合适的大小。
确认机制:发送报文段后启动计时器,等待ACK确认。
重新排序:对数据重新排序,来恢复原始数据。
丢弃重复:如果接收端收到重复的数据段,这舍弃留一。
流量控制:确保数据传输不会超过目的计算机接收数据的能力。

三次握手:
握手简化过程:
客户端:服务器,我们可以建立连接么? -> SYN=1,seq=x
服务器:可以啊,我们建立连接吧 ! -> SYN=1,ACK=1,seq=y,ack=x+1
客户端:收到,建立连接吧! -> ACK=1,seq=x+1,ack=y+1
挥手简化过程:
客户端:没数据发了,断开吧! -> FIN=1,seq=u
服务器:收到确认! ->ACK=1,seq=v,ack=u+1
服务器:我也没数据发了,断开吧! ->FIN=1,ACK=1,seq=W,ack=u+1
客户端:收到确认! ->ACK=1,seq=u+1,ack=w+1

为什么要三次握手?
首先要明确每次握手都能达到什么目的:

  • 第一次:客户端发送包,服务器收到了。
    这样服务器就得出了:客户端发送正常;服务端接收正常。
  • 第二次:服务端发送包,客户端收到了。
    这样客户端就得出了:服务端接收、发送正常;客户端接收、发送正常;
    但是此时服务端不知道客户端是否接收正常。
  • 第三次:客户端发送包,服务器收到了。
    这样服务端就得出了:服务端也知道了客户端接收正常。

为什么需要四次

  • 第一次:客户端发送断开连接请求。
    仅代表客户端不会再发送数据报文了,但客户端仍可以接收数据报文。
  • 第二次:服务端返回确认。
    服务端此时有可能还有相应的数据报文需要发送,因此需要先发送ACK报文,告知客户端“我知道你想断开连接的请求了”。这样客户端便不会因为没有收到应答而继续发送断开连接的请求(即FIN报文)。
  • 第三次:服务端发送断开连接请求(FIN)。
    给客户端FIN报文;这样可以保证数据通信正常可靠地完成。发送完FIN报文后,服务端进入LAST_ACK阶段(超时等待)。
  • 第四次:客户端返回确认。
    客户端及时发送ACK报文进行连接中断的确认,客户端等待2MSL。这时服务端就直接释放连接,进入可用状态(连接新的客户端)。

UDP
无连接、不可靠

  • 没有各种连接:在传输数据前不需要建立连接,也避免了后续的断开连接。
  • 不重新排序:对到达顺序混乱的数据包不进行重新排序。
  • 没有确认:发送数据包无须等待对方确认。因此,使用 UDP 协议可以随时发送数据,但无法保证数据能否成功被目标主机接收。

DNS
域名解析
ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。
电脑上会的host文件会存放常用的IP地址和对应的域名,DNS服务器专门用于存储域名与IP的映射表。
为什么?
IP地址是固定长度的,域名是不固定的。
IP地址不方便记忆,www.baidu.com好记。
IP地址是面向主机的,域名是面向用户的。


HTTP
超文本传输协议

关键:请求、相应。

浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器根据接收到的请求后,向客户端发送响应信息。
无连接:服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态:HTTP协议自身不对请求和响应之间的通信状态进行保存。协议对于发送过的请求或响应都不做持久化处理。

HTTP请求方法
GET、POST、PUT、DELETE


HTTPS
超文本传输安全协议

HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

区别:
HTTP没加密,HTTPS加密(SSL+HTTP);
HTTPS需要用到CA证书;
HTTP比较快,HTTPS需要三次握手,比较慢;
连接方式不同,端口也不同;


Cookie、Session

HTTP是无状态的协议,对于事务的处理没有记忆功能,每次客户端和服务端会话完成,服务端不会保留任何会话信息,每个请求都是完全独立的,服务端无法确认当前访问者的身份,无法分辨上一次发送者和这一次发送者是不是同一个人。
所以服务器和浏览器为了进行会话跟踪,就必须主动去维护一个“状态”,这个“状态”用于告知服务端前后两个请求是否来之同一个客户端,而这个状态需要通过Cookie或者Session来实现。

Cookie:
指的是浏览器里存储的一种数据,仅仅是浏览器实现的一种数据存储功能。
Cookie是服务器生成并发给浏览器的,浏览器把Cookie以key-value形式保存。
下一次请求同意服务时,会把Cookie发送给服务器。
由于Cookie是存在客户端上的,浏览器会做一些限制,确保Cookie不会被恶意使用。

Session:
服务器要知道当前发送请求的是谁,服务器就要给每个客户端分配不同的“身份标识”。
客户端每次发送请求时,就会带上这个“身份表示”。
服务器使用Session把用户信息保存在了服务器上,用户离开网站后Session就会被销毁。
Session因为保存在服务器上,所以比Cookie更安全。
缺陷:如果做了负载均衡,下一次请求到了另一台服务器上,Session会丢失。

区别:
Session比Cookie安全
Cookie只支持存字符串数据、Session可以存任意
又有效期不同:
Cookie可设置长时间保持,比如登录功能
Session一般时间较短,(默认情况下)客户端关闭或Session超时都会失效。
存储大小不同:
单个Cookie不能超过4K,Session可以很大(我也不知道可以多大)但服务器压力会变大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值