目录

协议分层设计要完成的功能

  • 差错控制 相应层次对等方的通信要可靠

  • 流量控制 发送端的发送速率必须使接收端来得及接收,不要太快

  • 分段和重装 发送端将要发送的数据划分成更小的单位,在接收端将其还原

  • 复用和分用 发送端几个高层会话复用一条低层的链接,在接收端再进行分用

  • 链接的建立和释放 交换数据前先建立一条逻辑链接,数据传送结束后释放链接

TCP/IP 体系结构

    • 应用层 TELNET FTP SMTP HTTP 定义的是应用进程间通信和交互的规则

    • 运输层 TCP UDP 不针对某个进程和应用,而是多种应用使用同一个运输层服务,有复用和分用的功能

    • 网络层 IP 把运输层产生的报文封装成分组进行转发

    • 链路层 两个相邻节点传送数据时,该层将网络层交下来的 IP 数据报 封装成 帧 frame,每一帧包括数据和必要的控制信息(同步信息,地址信息,差错控制等),控制信息使接收端能够知道一个帧是从哪个比特开始,到哪个比特结束。收到一个帧后,可以从中提取出数据部分,上交给网络层.控制信息还能检测收到的帧中有无差错。如果发现有差错,数据链路层直接丢弃这个出了差错的帧(上层会重传的)

    • 物理层

    应用层

    • 数据传输基本单位为报文

    • 协议:FTP 文件传送协议、Telnet 远程登录协议、DNS 域名解析协议、SMTP 邮件传送协议,POP3 协议邮局协议,HTTP 协议

    DNS 协议

    • DNS 是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务,可以简单地理解为将 URL 转换为 IP 地址。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的 IP 地址,在 Internet 上域名与 IP 地址之间是一一对应的,DNS 就是进行域名解析的服务器。DNS 命名用于 Internet 等 TCP/IP 网络中,通过用户友好的名称查找计算机和服务。

    DNS 详解

    $ cat /etc/resolv.conf  # 查看 DNS 服务器IP
    $ host -t A www.baidu.com   # 查看 baidu 域名的 A 记录
    $ sudo tcpdump -i eth0 -nt -s 500 port domain   # 跟踪 domain 查询包的记录

    NAT 协议

    NAT 网络地址转换(Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法 IP 地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。原因很简单,NAT 不仅完美地解决了 iP 地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

    DHCP 协议

    DHCP 动态主机设置协议(Dynamic Host Configuration Protocol)是一个局域网的网络协议,使用 UDP 协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配 IP 地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段

    HTTP 协议

    • GET:请求读取由 URL 所标志的信息。

    • POST:给服务器添加信息(如注释)。

    • PUT:在给定的 URL 下存储一个文档。

    • DELETE:删除给定的 URL 所标志的资源。

    • HTTP 中, POST 与 GET 的区别

      • Get 是从服务器上获取数据,Post 是向服务器传送数据。

      • Get 是把参数数据队列加到提交表单的 Action 属性所指向的 URL 中,值和表单内各个字段一一对应,在 URL 中可以看到。

      • Get 传送的数据量小,不能大于 2KB;Post 传送的数据量较大,一般被默认为不受限制。

      • 根据 HTTP 规范,GET 用于信息获取,而且应该是安全的和幂等的。

      • 所谓 安全的 意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。

    访问一个网站的过程

    • 现在假设如果我们在客户端(客户端)浏览器中输入http://www.baidu.com

      • 客户端浏览器通过 DNS 解析到 www.baidu.com 的 IP 地址 220.181.27.48,通过这个 IP 地址找到客户端到服务器的路径。客户端浏览器发起一个 HTTP 会话到 220.161.27.48,然后通过 TCP 进行封装数据包,输入到网络层。

      • 在客户端的传输层,把 HTTP 会话请求分成报文段,添加源和目的端口,如服务器使用 80 端口监听客户端的请求,客户端由系统随机选择一个端口如 5000,与服务器进行交换,服务器把相应的请求返回给客户端的 5000 端口。然后使用 IP 层的 IP 地址查找目的端。

      • 客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。

      • 客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定 IP 地址的 MAC 地址,然后发送 ARP 请求查找目的地址,如果得到回应后就可以使用 ARP 的请求应答交换的 IP 数据包现在就可以传输了,然后发送 IP 数据包到达服务器的地址。

    FTP 协议

    SMTP 协议

    DNS 系统

    TFTP 协议

    BOOTP 协议

    SNMP 协议