词汇汇总
TCP/IP、TCP、UDP、HTTP、Socket等
词汇解析:TCP/IP
百度百科:
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。
自我解读:
TCP/IP其实就是一系列协议的集合。计算机与计算机之间沟通必然和人类之间沟通是一样的道理,也需要制定一套规范的协议(也就是我们人类说话的语法)来约束双方进行数据的沟通。为什么是一系列协议呢?这个得从两个方面去解读:第一个方面是横向的,每一层都有很多的不同功能的协议;其次是纵向的,就是说整个计算机从整合数据到发送数据出去分了很多功能模块来分别处理复杂的过程,这就是网络中很重要的分层概念了。稍后会说到分层的概念以及TCP/IP到底分几层。
网络分层
为什么分层:
这在工业设计上是非常重要的概念也就是模块化。就是把一个具备不同功能的整体划分成很多个不同层次的模块。每一层模块做各司其职。这种设计思想也是为了服务市场,因为这样的话市场服务就能够细化,并且统一,大家只要遵循统一的规则协议去生产自己的产品就好了,我们的网络接口后者网络传输介质坏了可以直接换,不管你是什么牌子的,这就是遵守标准带来的方便。就好比说苹果手机和安卓手机一样,苹果手机特立独行,这样的话他就是唯一的,那么他的配件也就卖的非常贵了。
不同分层体系:
刚说到苹果手机和安卓手机,那么网络上其实也有两套分层标准,一套是ISO(国际标准化组织,注意不是iOS!!!敲黑板!!!)制定的OSI七层模型;还有一套就是我们的TCP/IP的四层模型(这是事实标准)。
PS: 虽然国际上认可的是OSI模型,因为这个更权威而且足够细致有七层,但是呢在制定这个标准的时候,TCP/IP这个标准已经执行过一段时间了,已经成为事实标准了,所以后面基本上大家都遵循TCP/IP标准,那么OSI模型就用来给大家研究问题和更好的理解网路结构。
OSI七层模型:
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
TCP/IP四层
网络接口层(物理层和数据链路层合并为网络接口层)
网络层
传输层
应用层(会话表示应用层统一为应用层)
具体的每一层有什么作用,都是用来干嘛的,可以参看文末的参考链接
为何叫TCP/IP协议族
因为在网络的分层结构中,每一层都是有很多的协议的,如果没有这些统一的协议,设备与设备之间是无法进行通信的,包括物理层打水晶头都是有标准的,要不然数据没法进行传输,就跟我们平时说话一样,你说的是中文,我说的是英语那这样的很难懂,有人说找个翻译,那这样的话还得找个不同厂商之间都支持的中间设备,那这样是多此一举的,所以才有了统一的标准协议
PS: 水晶头打法一般有两种568A、568B,一般现在遵循的是568B打法,网线一般有8根线的,1236负责数据通信,那么具体的线序标准打法:
橙白、橙、绿白、蓝、蓝白、绿、棕白、棕
跑题了,刚刚说到每一层都有每一层的协议,那么重要的两层是网络和传输层,网络层主要的协议为IP(internet protocol)协议,也叫可路由协议,是所以路由协议的基础,这一层很多的动态路由协议之类的;传输层主要有两个协议,具体如下:
- TCP(Transmission Contorl Protocol)传输控制协议,控制的意思我的理解是具有确认重传机制,能够有效控制数据报文的传输,面向有连接的传输协议
- UDP(User Datagram Protocol)用户数据报协议,我的意思理解是就像发电报一样,只管发不管收的,就像谍战片一样,约定好时间发报文就一定要发,即便外面有电报侦查车也得发,所以很危险([坏笑][坏笑][坏笑]),所以这个是实时的但是是不可靠的,面向无连接的传输协议
那么我们基本上用TCP也是比较多,除非一些实时性的比如说视频语音之类的会采用UDP之外很大程度上还是TCP居多,所以传输层就用TCP来代替,这样TCP/IP协议族就是这么来的。
词汇解析:TCP
上面讲了一点,那这里就不多讲了,我下面贴一下链接。重要的是TCP的三次握手和四次挥手。
- 三次握手:客户端和服务器端通过三次握手建立连接,连接建立好之后就可以通过这个连接来传输应用数据。其中要了解是怎么样利用这里面的字段来实现确认和重传机制的。这个大家要搞清楚。一定要搞清楚确认是通过来什么来确认报文的正确性的,重传又是根据什么来重新传输一份数据的。这个很有可能面试会问到。
- 四次挥手:客户端和服务端之间解除连接时候的机制。
链接如下:
《TCP/IP详解:卷一》-TCP部分讲解
词汇解析:Scoket
何为Scoket,这个大家可以百度下,相信大家可能百度一下之后,看下百度的说法:
socket(计算机专业术语)
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,
TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了
封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作
"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之
间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一
个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像
一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流
电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就
可以得到不同的服务。
其实我想说下我的理解和看法。
首先Scoket是套接字编程,它是一套编程接口,方便我们开发人员更好的操作传输层建立客户端与服务端之间的连接。那怎么建立连接呢就需要我们去调起TCP发起连接请求,所以为了方便开发人员开发相应的功能和业务,就有了这个套接字编程Scoket编程。所以它不是一个协议。
未完待续...
参考链接
iOS网络协议----HTTP/TCP/IP浅析
浅谈 CFNetwork (附测试DEMO)
HTTP协议—— 简单认识TCP/IP协议
《TCP/IP详解:卷一》-TCP部分讲解
《TCP/IP详解 卷一:协议》读书笔记--概述
[深入浅出Cocoa]iOS网络编程之CFNetwork
[深入浅出Cocoa]Bonjour网络编程
懵逼的HTTP、Socket与TCP