zoukankan      html  css  js  c++  java
  • tcp/ip协议和http协议

    TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合.

    传统上来说 TCP/IP 被认为是一个四层协议:应用层(telnet, ftp, http, smtp, dns等),传输层(tcp, udp),网络层(ip,icmp,arp,rarp),网络接口层(各种物理通信网络接口)

    三次握手

    四次挥手

    网络接口层:

    主要是指物理层次的一些接口,比如电缆等.

    网络层:

    提供独立于硬件的逻辑寻址,实现物理地址与逻辑地址的转换.

    在 TCP / IP 协议族中,网络层协议包括 IP 协议(网际协议),ICMP 协议( Internet 互联网控制报文协议),以及 IGMP 协议( Internet 组管理协议).

    3) 传输层:

    为网络提供了流量控制,错误控制和确认服务.

    在 TCP / IP 协议族中有两个互不相同的传输协议: TCP(传输控制协议)和 UDP(用户数据报协议).

    4) 应用层:

    为网络排错,文件传输,远程控制和 Internet 操作提供具体的应用程序

    2.数据包

    在 TCP / IP 协议中数据先由上往下将数据装包,然后由下往上拆包

    在装包的时候,每一层都会增加一些信息用于传输,这部分信息就叫报头,当上层的数据到达本层的时候,会将数据加上本层的报头打包在一起,继续往下传递.

    在拆包的时候,每一层将本层需要的报头读取后,就将剩下的数据往上传.

    3.网络接口层

    这一块主要主要涉及到一些物理传输,比如以太网,无线局域网.这里就不做详细的介绍了

    4.网络层

    前面有提到,网络层主要就是做物理地址与逻辑地址之间的转换.

    目前市场上应用的最多的是 32 位二进制的 IPv4 ,因为 IPv4 的地址已经不够用了,所以 128 位二进制的 IPv6 应用越来越广泛了(但是下面的介绍都是基于 IPv4 进行的)

    1) IP:

    TCP/IP 协议网络上的每一个网络适配器都有一个唯一的 IP 地址.

    IP 地址是一个 32 位的地址,这个地址通常分成 4 端,每 8 个二进制为一段,但是为了方便阅读,通常会将每段都转换为十进制来显示,比如大家非常熟悉的 192.168.0.1

    IP 地址分为两个部分:

    • 网络 ID

    • 主机 ID

    但是具体哪部分属于网络 ID,哪些属于主机 ID 并没有规定.

    因为有些网络是需要很多主机的,这样的话代表主机 ID 的部分就要更多,但是有些网络需要的主机很少,这样主机 ID 的部分就应该少一些.

    绝大部分 IP 地址属于以下几类

    • A 类地址:IP 地址的前 8 位代表网络 ID ,后 24 位代表主机 ID。

    • B 类地址:IP 地址的前 16 位代表网络 ID ,后 16 位代表主机 ID。

    • C 类地址:IP 地址的前 24 位代表网络 ID ,后 8 位代表主机 ID。

    这里能够很明显的看出 A 类地址能够提供出的网络 ID 较少,但是每个网络可以拥有非常多的主机

    但是我们怎么才能看出一个 IP 地址到底是哪类地址呢?

    • 如果 32 位的 IP 地址以 0 开头,那么它就是一个 A 类地址。

    • 如果 32 位的 IP 地址以 10 开头,那么它就是一个 B 类地址。

    • 如果 32 位的 IP 地址以 110 开头,那么它就是一个 C 类地址。

    那么转化为十进制(四段)的话,我们就能以第一段中的十进制数来区分 IP 地址到底是哪类地址了。

     

    2)地址解析协议 ARP

    简单的来说 ARP 的作用就是把 IP 地址映射为物理地址,而与之相反的 RARP(逆向 ARP)就是将物理地址映射为 IP 地址。

    3)子网

    前面提到了 IP 地址的分类,但是对于 A 类和 B 类地址来说,每个网络下的主机数量太多了,那么网络的传输会变得很低效,并且很不灵活。比如说 IP地址为 100.0.0.0 的 A 类地址,这个网络下的主机数量超过了 1600 万台。

    所以子网掩码的出现就是为了解决这样的问题。

    我们先回顾一下之前如何区分主机 IP 和网络 IP 的。

    以 A 类地址 99.10.10.10 为例,前 8 位是网络 IP ,后 24 位是主机 IP 。

    子网掩码也是一个 32 为的二进制数,也可以用四个十进制数来分段,他的每一位对应着 IP 地址的相应位置,数值为 1 时代表的是非主机位,数值为 0 时代表是主机位。

     

    5 传输层

    传输层提供了两种到达目标网络的方式

    • 传输控制协议(TCP):提供了完善的错误控制和流量控制,能够确保数据正常传输,是一个面向连接的协议。

    • 用户数据报协议(UDP):只提供了基本的错误检测,是一个无连接的协议。

    特点:

    1)UDP:

    • 把数据打包

    • 数据大小有限制(64k)

    • 不建立连接

    • 速度快,但可靠性低

    2)TCP:

    • 建立连接通道

    • 数据大小无限制

    • 速度慢,但是可靠性高

    由于传输层涉及的东西比较多,比如端口,Socket等,都是我们做移动开发需要了解的,之后的文章中我们再具体做介绍,这里就不讲解了。

    6 应用层

    应用层做为 TCP/IP 协议的最高层级,对于我们移动开发来说,是接触最多的。

    运行在TCP协议上的协议:

    • HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。

    • HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。

    • FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。

    • POP3(Post Office Protocol, version 3,邮局协议),收邮件用。

    • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。

    • TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。

    • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。

    运行在UDP协议上的协议:

    • BOOTP(Boot Protocol,启动协议),应用于无盘设备。

    • NTP(Network Time Protocol,网络时间协议),用于网络同步。

    • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。

    其他:

    • DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作(运行在TCP和UDP协议上)。

    • ECHO(Echo Protocol,回绕协议),用于查错及测量应答时间(运行在TCP和UDP协议上)。

    • SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的收集和网络管理。

    • ARP(Address Resolution Protocol,地址解析协议),用于动态解析以太网硬件的地址。

    HTTP简介

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

    HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。

    HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

    http请求-响应模型.jpg

    主要特点

    1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

    3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
    5、支持B/S及C/S模式。

  • 相关阅读:
    164 Maximum Gap 最大间距
    162 Find Peak Element 寻找峰值
    160 Intersection of Two Linked Lists 相交链表
    155 Min Stack 最小栈
    154 Find Minimum in Rotated Sorted Array II
    153 Find Minimum in Rotated Sorted Array 旋转数组的最小值
    152 Maximum Product Subarray 乘积最大子序列
    151 Reverse Words in a String 翻转字符串里的单词
    bzoj3994: [SDOI2015]约数个数和
    bzoj 4590: [Shoi2015]自动刷题机
  • 原文地址:https://www.cnblogs.com/FredCong/p/8463061.html
Copyright © 2011-2022 走看看