zoukankan      html  css  js  c++  java
  • TCP/IP协议的浅析

     互联网发展到今天,已经没有人会不知道网络和上网了。Internet以其独特的魅力给整个世界带来了一场巨大的革命。而支撑起整个互联网的运作的正是TCP/IP协议。

    TIP/IP协议并不只是单纯的一个协议,它其实是一个完整的协议族。这个协议族里面包含着一系列的协议,就比如我们所熟知的http协议,IP协议,TCP和UDP等等。这里面的东西真要细究起来可以没完没了,没完没了。所幸我们也不是要全面解析TCP/IP协议。我们都知道最初为了把世界上各种不同的网络进行规范ISO组织提出了开放式系统互联的参考模型, 也就是所谓的OSI参考模型。OSI参考模型一共有七层,而TCP/IP协议的参考模型只有四层。但是TCP/IP的四层却基本包含了OIS七层的所有内容。因为OSI是一个标准化的参考模型,它考虑到几乎所有的方面,整个模型过于臃肿,从OSI提出到现在很少有一个网络会完全的参照它的每一层来进行设计搭建。使用更多的则是简化后的也就是我们使用至今的TCP/IP协议族。

      那么TCP/IP协议族到底是个什么东西呢?打个比方吧,我们小时候应该都玩过各种类似抓迷藏之类的游戏吧,那么一个游戏要想玩起来有一个必不可少的东西:那就是“规则”。规则其实就是规范了整个游戏的玩法,有了规则这个游戏才能很好的运行下去。“没有规矩,不成方圆”此话说的是很走心了。其实换一个角度想想我们的语言又何尝不是一种规则,有了这个规则我们不同的个体才能互相联系。那么换成计算机网络也是一个意思,不同的计算机网络要怎么样才能交流,这就需要定义一种规则。而TCP/IP协议就是这么一种规则。它把计算机网络通过既定的规则联系了起来,从而构成了我们今天看到的互联网。TCP/IP协议族里面的协议有很多,这次就挑几个比较著名的讲一讲把。

    TCP协议和UDP协议:这两个都是传输层的协议,TCP(Transmission ControlProtocol,传输控制协议)和 UDP(User Data Protocol,用户数据报协议)。TCP是面向连接的提供可靠的传输的协议。为了保证传输的可靠性TCP协议的连接和断开会分别进行所谓的“三次握手”和“四次挥手”。握手和挥手的过程使用了TCP 的标志(flag) —— SYN(synchronize) 和ACK(acknowledgement)。

      三次握手:发送端首先向接收端发送一个带SYN标志的数据包,接收端接受到这个数据包后向发送端发送一个带有SYN/ACK标志的数据包表示传达的消息已经确认,最后发送端在发送一个带有ACK标志的数据包,代表握手结束。

    *图取自《图解HTTP》一书

    四次挥手:首先客户端向服务器发送带有FIN标志的数据包,但是此时可能数据还没有传输完毕,所以服务器不会马上返回一个FIN信号,而是先发送一个带ACK标志的数据包的确认信号,带数据传输完毕后再次向客户端发送带有FIN标志的信号,最后客户端返回ACK信号表示连接结束。

    TCP协议的握手和挥手的最低限度上(实际上也很大程度上 保证了)保证了连接的可靠性。

      而UDP协议则不一样,UDP协议是不可靠的,无连接的传输协议。UDP因为不用与客户端建立链接,它的传输效率要比TCP协议高,适用于对传输效率要求高的运用。

    *图取自:TCP/IP 协议栈及 OSI 参考模型详解

    IP协议:IP协议也是一个极为重要的协议,也就是我们通常所说的IP地址。IP地址的作用主要是标识每一台不同的计算机,使得每一个机器在网络中都有唯一的地址,通过这个地址就能够方便的找到传输的目的地。

    HTTP协议:(HypertextTransfer Protocol)超文本传输协议。 用于传输那些构成万维网上的页面的文件。这个应该是我们接触的最多的一个协议了。http协议属于TCP/IP协议族参考模型的最上层,也就是应用层。HTTP是建立在TCP服务之上的一种应用。一个很显著的特征就是通过请求和响应的交换来达成通信。请求的一端称为客户端,而响应的一端则称为服务器。服务器在没有接受到请求的时候是不会做出响应的,一旦响应完成那么这一次的链接就结束。而HTTP是一种不保存状态的协议,也就是说一次的响应结束后,所有的东西都会消失。使用 HTTP 协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。但是如果想保留一些登录信息要怎么办呢?HTTP 虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了 Cookie 技术。Cookie 是一个保存在客户端本地的小文件,这个文件里面记录着上一次链接的一些信息,通过Cookie 就可以轻松的记住一些想要保留的信息了。

  • 相关阅读:
    yolo_to_onnx ValueError: need more tan 1 value to unpack
    yolo_to_onnx killed
    C++ 实现二维矩阵的加减乘等运算
    Leetcode 1013. Partition Array Into Three Parts With Equal Sum
    Leetcode 1014. Best Sightseeing Pair
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 219. Contains Duplicate II
    Leetcode 890. Find and Replace Pattern
    Leetcode 965. Univalued Binary Tree
    Leetcode 700. Search in a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/cbs-writing/p/9144928.html
Copyright © 2011-2022 走看看