网络协议 订阅
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。 [1] 展开全文
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。 [1]
信息
目    的
使两个进程相互通信
解    释
描述进程之间信息交换数据
外文名
Network Protocol
中文名
网络协议
性    质
网络术语
网络协议术语简介
网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。对等实体通常是指计算机网络体系结构中处于相同层次的信息单元。一般系统网络协议包括五个部分:通信环境,传输服务,词汇表,信息的编码格式,时序、规则和过程。1969年美国国防部建立最早的网络——阿帕计算机网络时,发布了一组计算机通信协议的军用标准,它包括了五个协议,习惯上以其中的TCP和IP两个协议作为这组协议的通称。 TCP/IP是因特网的正式网络协议,是一组在许多独立主机系统之间提供互联功能的协议,规范因特网上所有计算机互联时的传输、解释、执行、互操作,解决计算机系统的互联、互通、操作性,是被公认的网络通信协议的国际工业标准。TCP/IP是分组交换协议,信息被分成多个分组在网上传输,到达接收方后再把这些分组重新组合成原来的信息。除TCP/IP外,常用的网络协议还有PPP、SLIP等。 [2] 
收起全文
精华内容
参与话题
问答
  • 计算机网络协议总结

    万次阅读 多人点赞 2019-05-12 16:35:29
    计算机网络协议全面总结 一、OSI七层协议 物理层: 很久很久以前,那时候还没有现在的外星人超级电脑,或者华为的P30。比较调皮的小明想要把自己机器上写好的一些个人游戏心得(如何玩好王者农药)发给小红(校花)...

    计算机网络协议全面总结

    一、OSI七层协议

    物理层:
    很久很久以前,那时候还没有现在的外星人超级电脑,或者华为的P30。比较调皮的小明想要把自己机器上写好的一些个人游戏心得(如何玩好王者农药)发给小红(校花),希望博得芳心。小明个人比较勤,游戏总结心得总结的比较详细(大概有100M)。但是到底怎么才能从自己的机器上传给小红的机器呢,进过一番打听,他发现远在太平洋另一端的科学家已经发明了一种技术 物理层,专门用来解决小明这种单身狗问题。该层主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
    他很兴奋,通过一个月的努力终于搭建起了这个物理层。

    数据链路层:
    然而上天却好像和小明开了一个玩笑,楼下的小润发超市的网线、光纤最近卖光了,但是这个物理层传输数据只能通过网线传输。到底怎么办!!。
    此时,他体内的雄性激素促使着他的大脑以光速运转。终于他饿了,无奈得走去学校饭堂三楼吃麻辣烫。此时听到隔壁坐着的那位王叔叔(老王)说,科学家已经发明了一种技术可以通过无线电来传输。What?这不是完美解决了自己的困扰吗。小明连忙对隔壁老王说谢谢,老王留下了幸福的泪水!!
    右通过一番努力查资料,小明发现:这种技术可以通过电线我能发数据流,也可以通过其它介质来传输。然后还要保证了传输过去的比特流是正确的,有纠错功能。定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
    小明把层技术称为:数据链路层

    网络层:
    由于小明家离小红家比较远,无线电信号无法传输到哪里,但是这完全难不到小明。他通过在离小红家的路上搭建了多个节点(路由器,交换机),用于信号的传输。但是由于他有时候被雄性激素冲昏了头脑,搭建的信号节点有点乱,而且很多。那他又想用最短的路径来传输怎么办呢?在小明沮丧走回家的时候已深夜,他看见今天看到的那位王叔叔匆匆的从自己家走出来,他连忙拉住王叔叔,向他诉说自己的烦恼,希望王叔叔能给自己一些帮助。当小明说完后,王叔叔从紧张变为和蔼,和小明说:其实已经有人发明了网络层。即路由器,交换机那些具有寻址功能的设备所实现的功能。这一层定义的是IP地址,通过IP地址寻址。所以产生了IP协议。该层能选择最佳路径,这就是路由要做的事。

    传输层
    为了趁热打铁,小明通宵查资料来学习相关信息,并且简单搭建好网络层,开始传输数据,趁着传输过程好好睡一觉。当他起来的时候,噩梦才刚刚开始,因为他传输的数据太大(100M)只传输了一部分,而且断断续续的,有一部分数据根本传不出去。那怎么办?
    “加一层传输层!!!”:王叔叔在楼下大声喊着,“资料在你妈妈的床头柜”,王叔叔继续说。小明连忙找到资料,上面写着:“
    发正确的发比特流数据到另一台计算机了,但是当我发大量数据时候,可能需要好长时间,例如一个视频格式的,网络会中断好多次(事实上,即使有了物理层和数据链路层,网络还是经常中断,只是中断的时间是毫秒级别的)。
    那么,我还须要保证传输大量文件时的准确性。于是,我要对发出去的数据进行封装。就像发快递一样,一个个地发。
    例如TCP,是用于发大量数据的,我发了1万个包出去,另一台电脑就要告诉我是否接受到了1万个包,如果缺了3个包,就告诉我是第1001,234,8888个包丢了,那我再发一次。这样,就能保证对方把这个视频完整接收了。
    例如UDP,是用于发送少量数据的。我发20个包出去,一般不会丢包,所以,我不管你收到多少个。在多人互动游戏,也经常用UDP协议,因为一般都是简单的信息,而且有广播的需求。如果用TCP,效率就很低,因为它会不停地告诉主机我收到了20个包,或者我收到了18个包,再发我两个!如果同时有1万台计算机都这样做,那么用TCP反而会降低效率,还不如用UDP,主机发出去就算了,丢几个包你就卡一下,算了,下次再发包你再更新。
    TCP协议是会绑定IP和端口的协议,下面会介绍IP协议。


    通过如此这般的操作,他!小明同学终于把自己100M的游戏心得发送给了小红

    会话层(解除与建立与别的接口的联系)
    然而,小红根本不玩游戏。得知这个消息后,小明楞逼了。但是他没有放弃,而是把自己猜到小红喜欢的信息都发给他,但是小明每发一次,难道我每次都要调用TCP去打包,然后调用IP协议去找路由,这一来一回就是一天,那怎么办呢?
    他又翻了翻王叔叔的笔记本资料,写着:会话层可以帮助我们建立和管理应用程序之间的通信,封装了调用TCP去打包,然后调用IP协议去找路由等操作
    如此一来,他只需要十几二十分钟就能够成功搭建好传输数据的机器。

    表示层(数据格式化,代码转换,数据加密)
    有一次,小明传了一份数据,是关于如何选购化妆品的文章,小红对此非常感兴趣,但是当小红想用自己的window开该文件时发现根本无法打开,后来小红在下课的时候和小明说自己无法打开这个文件,小明想自己用Linux系统明明完整地发送给了小红啊,那就奇怪了,但是出于耍帅,小明只是轻轻地说“我放学后再发你一份!”。
    这时虽然小明不知道是出了什么问题,但是他坚信老王叔叔的资料笔记会有答案的。果然!上清清楚楚的写着:“现在我能保证应用程序自动收发包和寻址了。但是我要用Linux给window发包,两个系统语法不一致,就像安装包一样,exe是不能在linux下用的,shell在window下也是不能直接运行的。于是需要表示层(presentation),帮我们解决不同系统之间的通信语法问题。
    小明立即用了一个通宵手动搭好了表示层,传输了一份完美的文件给小红

    应用层(文件传输,电子邮件,文件服务,虚拟终端)

    官方OSI说明图:
    在这里插入图片描述

    TCP/IP协议

    TCP/IP协议是由七层模型简化成四层而来。(TPC/IP协议其实泛指了四层模型中的全部协议,区别开TCP协议,IP协议)
    七层有底向上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
    简化后的四层分别是:主机到网络层(比特)、网络层(数据帧)、传输层(数据包)、应用层(数据段)。
    每一层对于上一层来讲是透明的,上层只需要使用下层提供的接口,并不关心下层是如何实现的。

    与OSI七层协议的对比:
    在这里插入图片描述

    传输层:

    网络层是主机与主机之间的通讯,而传输层则是进程之间的通讯。

    • 为何要有传输层?
      应为进程是资源分配的基本单位,计算机之间的信息传输也只是一台计算机的进程传输到另外一台计算机的进程中
    • 一台计算机如何找到另外一台计算机呢,那就是通过IP协议来完成的(复用,多个进程都可以把信息通过传输层到IP层,再传输到另外一台计算机中)。
    • 那如何找到另外一台计算机的进程(pid)呢,那就是用端口(分用,到达另外一台计算机后还要通过端口号找到对应进程)

    传输层主要有两种协议:UDP和TCP

    一、UDP协议

    特点:
    • 无连接,传输数据时不需要建立连接,减小开销
    • 尽最大努力交付,不确保可靠交付
    • 面向报文
    • 没有拥塞控制、确保信息实时性
    • 支持一对一,一对多,多对一,多对多
    • 首部开销小,只有8个字节
    UDP的首部格式(UDP头):
    • 源端口,发送方的端口
    • 目标端口,接收方的端口
    • 长度,首部长度 + 用户数据包的长度(可以没有数据包,所用最小值为8)
    • 检验和,检查UDP用户数据传输中是否与错,有错就丢弃(检查首部长度 + 用户数据包)

    在这里插入图片描述

    二、TCP协议
    A、特点:
    • 面向连接的协议。数据传输之前都要建立连接(三次挥手),数据传输结束都要释放连接(四次挥手)
    • 一条TCP连接只能有两个端点,端点是socket(结构 IP地址:端口号),并非主机或进程。
    • 可靠交付
    • 全双工通信(一端既可以做发送方也可以做接收方)
    • 面向字节流
    B、为何TCP是可靠的呢?

    其实TCP是依赖停止 等待协议连续ARQ 协议+滑动窗口协议才达到可靠的目的

    a、等待协议
    • 特点:资源利用率非常低
    • 工作原理
      客户发送一次数据到服务端,必须等到服务端响应后才发第二次数据,中间的等待时间RTT占了大部分时间,中间如果出现差错(超时或确认丢失)都需要从新传输。
    b、连续ARQ协议
    • 连续ARQ协议工作原理
      维持一个发送窗口(记录了当前可以发送的数据包数量n),在窗口内的数据都可以连续发送出去,服务器只在接收完一个发送窗口的数据后才回响应(累计确认),发送端接收到响应就把发送窗口移动n位,开始新一轮数据发送。

    以上只是简单了解TCP协议的发送流程,如果要清楚发送细节,必须知道TCP报文首部

    TCP报文段的首部格式

    虽然说TCP是面向字节流的,但是TCP传输的数据单元却是报文段,报文段由首部和数据两部分组成,如图

    在这里插入图片描述

    一、源端口和目标端口(各占两字节)
    二、序号(占4字节):TCP连接传输的数据每一个字节都有一个序号,而一个报文段可能会有多个字节的数据,这个序号指的是TCP报文段中起始的序号,下一个报文段的序号则是该序号加上报文数据长度(三次握手和四次挥手时说的SYN或ACK会消耗一个序号就是指该序号)
    三、确认号(占4字节):因为一次数据传输会分成多个报文段,接收方接收完一次报文段后如果要发送确认(有可能不用确认,因为是接收完发送窗口的报文段才确认的),则会携带一个确认号,表示接收方想要接收的下一个报文的序号
    四、数据偏移(占4字位):数据部分的起始位置离报文段起始位置的距离,就是报文首部的长度,单位是4字节,所以4位能表示最大值是十进制的15,就是15 x 4字节 = 60字节,TCP报文首部最大长度为60字节
    五、保留(占6位):未被使用,全置为0
    六、紧急URG:当URG=1时紧急数据才有效。注意,这里URG并不是紧急数据,只是一个标志,标志着紧急数据是否有效
    七、确认ACK:当ACK=1时确认号才有效,当建立连接后全部传输的报文都要把ACK设置为1
    八、推送PSH:接收方机器会有一个接收,当接收缓存慢了才回把接收到的数据交付到接收应用进程中,而如果发送端把报文的PSH设为1,接收方接收到该报文会立即交付到应用的进程中
    九、复位RST:两个作用,1、当RST=1时,表示TCP连接中出现严重差错,必须释放连接,然后重新建立运输连接。2、当RST=1时,拒绝一个非法的报文段或拒绝打开一个连接。
    十、同步SYN:用于同步序号(告诉另外一方,他们之间从该序号开始传输报文段),当SYN=1,ACK=0表示这时一个连接请求报文。
    十一、终止FIN:用于释放一个连接。当FIN=1时,表明此报文的发送方的数据已经发送完毕,并要求释放运输连接。
    十二、窗口(占2字节),是一个接收窗口,接收方允许发送方发送的数据量
    十三、检验和(占2字节):检验接收过来的报文段(报文首部和用户数据)是否有误
    十四、紧急指针(占2字节):当URG=1时才有效,指出紧急数据未尾位置(开始位置是整个报文段中用户数据的开头)
    十五、选项,长度可变,最长40字节

    那到底TCP是如何实现可靠传输的呢?

    TCP可靠传输的实现

    一、通过滑动窗口来发送数据

    在这里插入图片描述

    • 发送窗口有两部分组成,已发送的报文段 和 能够发送但未发送的报文段(等待已发送报文段全部接收完发回来的确认就可以发送了)
    • 当收到确认后发送窗口会向右移动到7位置,作为窗口的起始位置。
    • 发送窗口,发送窗口有可能会收缩(因为接收窗口有可能因为接收缓存不够而变小)
    二、超时重传时间的选择

    采用一个根据RTT动态计算的时间,并不是直接采用一个固定的时间
    RTT:发送一个报文段到收到对应的ACK所花费的时间
    RTO:超时重传时间
    RTTs是一个加权平均RTT时间
    RTTd是RTTs偏差的加权平均
    RTO = RTTs + 4 * RTTd
    如果发生了重传 ,这次的RTT会让RTTs会变大,此时是不会用该RTT来计算RTTs的

    三、确认SACK

    是一个TCP报文首部的选项。
    当数据传输过程中,接收方可能会未按顺收到部分报文段,此时序号告诉发送方从新传输这些报文段,SACK选项就是用于告诉发送方需要传输那些报文段的

    TCP传输连接管理

    连接的三个阶段:建立连接、数据传输、连接释放
    在建立连接的过程中要解决三个问题:
    1、使每一方都知道对方的存在
    2、协商一些参数
    3、能够运输实体资源

    主动建立连接的一端叫客户端,被动等待连接建立的一方叫服务器

    连接建立(三次握手)

    如图:
    在这里插入图片描述
    每次发送一个seq时,都会消耗一个序号,所以会发现在确认时,ack总等于另一端请求的seq+1

    • 为何需要第三次握手?
      假设没有第三次握手(即A再次确认)
      在很久很久以前,A发了一个连接请求给B,但是网络滞留的原因,请求没有到达B,所以B也没有确认返回给A,所以A右发送了一个连接请求给B,此时B收到了连接请求并返回了一个确认给A,此时连端开始愉快的数据传输之旅。当传输结束时,分别断开连接,各自干各自的活儿。但是过了一段时间,之间滞留在网络中的A发出的连接请求到达了B中,B以为A又要传输数据,便右回了一个确认给A,但是A并不需要输出传输,也没有理会这个确认,而B却在傻傻等待A传输数据,这个就会浪费B的资源。
      但是如果有第三次A的确认,A这个滞留的连接传给B,B返回一个确认,但是A不想传输数据了,便没有回一个确认给B(第三次握手),B没有收到该确认也不会等待A传输数据。
    连接释放(四次挥手)

    如图:
    在这里插入图片描述
    第一次挥手:客户端发送连接,FIN=1标志着A已经完成了数据的发送。
    第二次挥手:B回了一个确认,此时A与B的发送连接就断开了。
    第三次挥手:因为TCP连接是全双工通信的,B还保留着一个对A大发送连接,如果等到B也不需要发送数据给A时,B会发送一个连接给A,seq等于一个大于或等于v的值(因为A与B断开发送连接到B与A断开发送连接期间有可能B向A发送了数据,就是消耗序号)。
    第四次挥手:当A收到B的连接时,要回一个响应给B,但是此时会有一个2MSL长的等待时间,时间一过,就真正的断开与B的全部连接了。

    • 为什么需要2MSL的等待时间?
      MSL:最长报文寿命
      当A发送确认给A后,如果此时出现了一些状况(连接被丢弃等),确认无法到达B中,B会重新发送一个连接给A,但是A就停止了,B就一直等待(其实有一个保活时间)。
      如果有了这个等待时间,就算A的ACK确认丢失了,B也会再从新发送一个连接给A,A接收到该连接后,会从新计算等待时间。A会再确认一次

    应用层

    HTTP协议

    特点:
    • 支持客户端 / 服务器模式
    • 简单快速
    • 灵活
    • 无连接,在完成一次请求获得响应后就会断开
    • 无状态,没有记忆的,请求完一次后,就结束了,后面如果要再获得数据必须从新请求
    请求报文的结构

    在这里插入图片描述

    请求头部:用于设置请求的的一些参数如:ContentType
    请求空行:就算请求数据为空,都要有空行,表示请求首部的结束

    从浏览器地址栏键入URL,回车后会尽力的流程:

    • DNS解析
    • TCP连接
    • 发送HTTP请求
    • 服务器处理请求,并返回HTTP报文
    • 浏览器解析渲染页面
    • 连接结束

    GET请求与POST请求的区别

    • HTTP报文层面:GET请求信息放在URL中,POST放在报文体中
    • 数据库层面:GET符合幂等性和安全性,POST不符合
    • 其他层面:GET可以被缓存、储存,而POST不行

    Cookie和Session的区别

    • 为什么会有这两种技术?
      在使用一些需要登录的网站时,每次访问,都会需要验证个人信息,即登录。这样做比较繁琐,能否将个人的账号和密码存起来,访问的时候直接用存取来的个人信息进行验证呢?解决这个问题的就是Cookie和Session
    • Cookie:通过客户端(浏览器)来缓存个人信息。当用户第一次登录时,服务器会将个人信息放在了响应中, 浏览器接收到响应时候会将个人信息以Cookie的形式访问浏览器中保存起来,在下一次访问服务器的时候会带上该Cookie,Cookie中有个人信息,服务器能解析出来,所以不同再次登录验证了。(不够安全,对服务器的开销小)在这里插入图片描述
    • Session通过服务端来缓存信息,根据请求中是否包含Session id的字段,如果不存在则创建一个,并返回给浏览器缓存起来。如果存在则通过该Session id在服务器存储中获得对应的Session信息,直接验证。(安全,服务器的开销变大)
      在这里插入图片描述

    HTTP与HTTPS的区别:

    1、HTTPS需要到CA申请证书,HTTP不需要
    2、HTTPS密文传输、HTTP明文传输
    3、连接方式不同,HTTPS默认使用443端口,HTTP使用80端口
    4、HTTPS = HTTP + 加密+认证+完整性保护,较HTTP安全

    其实也不一定就安全,原因是用户不会再访问时候加上http:// 或 https://, 浏览器就默认会加上http://,然后通过转发的方式转成https:// 这个过程http就有可能会被劫持了。
    此时会用到一个技术 HSTS(HTTP Strict Transort Security)

    展开全文
  • 常用的三种网络协议

    万次阅读 2017-07-14 16:50:52
    网络协议(Protocol)是一种特殊的软件,是计算机网络实现其功能的最基本机制。网络协议的本质是规则,即各种硬件和软件必须遵循的共同守则。网络协议并不是一套单独的软件,它融合于其他所有的软件系统中,因此可以说...
    网络协议(Protocol)是一种特殊的软件,是计算机网络实现其功能的最基本机制。网络协议的本质是规则,即各种硬件和软件必须遵循的共同守则。网络协议并不是一套单独的软件,它融合于其他所有的软件系统中,因此可以说,协议在网络中无所不在。网络协议遍及OSI通信模型的各个层次,从我们非常熟悉的TCP/IP、HTTP、FTP协议,到OSPF、IGP等协议,有上千种之多。对于普通用户而言,不需要关心太多的底层通信协议,只需要了解其通信原理即可。在实际管理中,底层通信协议一般会自动工作,不需要人工干预。但是对于第三层以上的协议,就经常需要人工干预了,比如TCP/IP协议就需要人工配置它才能正常工作。

    常用的三个网络协议
    网络中不同的工作站,服务器之间能传输数据,源于协议的存在。随着网络的发展,不同
    的开发商开发了不同的通信方式。为了使通信成功可靠,网络中的所有主机都必须使用同
    一语言,不能带有方言。因而必须开发严格的标准定义主机之间的每个包中每个字中的每
    一位。这些标准来自于多个组织的努力,约定好通用的通信方式,即协议。这些都使通信
    更容易。
    已经开发了许多协议,但是只有少数被保留了下来。那些协议的淘汰有多中原因---设
    计不好、实现不好或缺乏支持。而那些保留下来的协议经历了时间的考验并成为有效的通
    信方法。当今局域网中最常见的三个协议是MICROSOFT的NETBEUI、NOVELL的IPX/SPX和交叉
    平台TCP/IP。

    一:NETBEUI
    NETBEUI是为IBM开发的非路由协议,用于携带NETBIOS通信。NETBEUI缺乏路由和网络
    层寻址功能,既是其最大的优点,也是其最大的缺点。因为它不需要附加的网络地址和网
    络层头尾,所以很快并很有效且适用于只有单个网络或整个环境都桥接起来的小工作组环
    境。
    因为不支持路由,所以NETBEUI永远不会成为企业网络的主要协议。NETBEUI帧中唯一
    的地址是数据链路层媒体访问控制(MAC)地址,该地址标识了网卡但没有标识网络。路由
    器靠网络地址将帧转发到最终目的地,而NETBEUI帧完全缺乏该信息。
    网桥负责按照数据链路层地址在网络之间转发通信,但是有很多缺点。因为所有的广
    播通信都必须转发到每个网络中,所以网桥的扩展性不好。NETBEUI特别包括了广播通信的
    记数并依赖它解决命名冲突。一般而言,桥接NETBEUI网络很少超过100台主机。
    近年来依赖于第二层交换器的网络变得更为普遍。完全的转换环境降低了网络的利用
    率,尽管广播仍然转发到网络中的每台主机。事实上,联合使用100-BASE-T Ethernet,允
    许转换NetBIOS网络扩展到350台主机,才能避免广播通信成为严重的问题。

    二:IPX/SPX
    IPX是NOVELL用于NETWARE客户端/服务器的协议群组,避免了NETBEUI的弱点。但是,
    带来了新的不同弱点。
    IPX具有完全的路由能力,可用于大型企业网。它包括32位网络地址,在单个环境中允
    许有许多路由网络。
    IPX的可扩展性受到其高层广播通信和高开销的限制。服务广告协议(Service Adver
    tising Protocol,SAP)将路由网络中的主机数限制为几千。尽管SAP的局限性已经被智能路
    由器和服务器配置所克服,但是,大规模IPX网络的管理员仍是非常困难的工作。

    三:TCP/IP

    每种网络协议都有自己的优点,但是只有TCP/IP允许与Internet完全的连接。TCP/IP
    是在60年代由麻省理工学院和一些商业组织为美国国防部开发的,即便遭到核攻击而破坏
    了大部分网络,TCP/IP仍然能够维持有效的通信。ARPANET就是由基于协议开发的,并发展
    成为作为科学家和工程师交流媒体的Internet。
    TCP/IP同时具备了可扩展性和可靠性的需求。不幸的是牺牲了速度和效率(可是:TCP
    /IP的开发受到了政府的资助)。
    Internet公用化以后,人们开始发现全球网的强大功能。Internet的普遍性是TCP/IP
    至今仍然使用的原因。常常在没有意识到的情况下,用户就在自己的PC上安装了TCP/IP栈
    ,从而使该网络协议在全球应用最广。
    TCP/IP的32位寻址功能方案不足以支持即将加入Internet的主机和网络数。因而可能
    代替当前实现的标准是IPv6


    另一种解释:

    网络中不同的工作站,服务器之间能传输数据,源于协议的存在。随着网络的发展,不同的开发商开发了不同的通信方式。为了使通信成功可靠,网络中的所有主机都必须使用同一语言,不能带有方言。因而必须开发严格的标准定义主机之间的每个包中每个字中

    网络中不同的工作站,服务器之间能传输数据,源于协议的存在。随着网络的发展,不同的开发商开发了不同的通信方式。为了使通信成功可靠,网络中的所有主机都必须使用同一语言,不能带有方言。因而必须开发严格的标准定义主机之间的每个包中每个字中的每一位。

    这些标准来自于多个组织的努力,约定好通用的通信方式,即协议。这些都使通信更容易。

    已经开发了许多协议,但是只有少数被保留了下来。那些协议的淘汰有多中原因---设计不好、实现不好或缺乏支持。而那些保留下来的协议经历了时间的考验并成为有效的通信方法。当今局域网中最常见的三个协议是MICROSOFT的NETBEUI、NOVELL的IPX/SPX和交叉平台TCP/IP。

    一、NETBEUI

    NETBEUI是为IBM开发的非路由协议,用于携带NETBIOS通信。NETBEUI缺乏路由和网络层寻址功能,既是其最大的优点,也是其最大的缺点。因为它不需要附加的网络地址和网络层头尾,所以很快并很有效且适用于只有单个网络或整个环境都桥接起来的小工作组环境。

    因为不支持路由,所以NETBEUI永远不会成为企业网络的主要协议。NETBEUI帧中唯一的地址是数据链路层媒体访问控制(MAC)地址,该地址标识了网卡但没有标识网络。路由器靠网络地址将帧转发到最终目的地,而NETBEUI帧完全缺乏该信息。

    网桥负责按照数据链路层地址在网络之间转发通信,但是有很多缺点。因为所有的广播通信都必须转发到每个网络中,所以网桥的扩展性不好。NETBEUI特别包括了广播通信的记数并依赖它解决命名冲突。一般而言,桥接NETBEUI网络很少超过100台主机。

    近年来依赖于第二层交换器的网络变得更为普遍。完全的转换环境降低了网络的利用率,尽管广播仍然转发到网络中的每台主机。事实上,联合使用100-BASE-T Ethernet,允许转换NetBIOS网络扩展到350台主机,才能避免广播通信成为严重的问题。

    二、IPX/SPX

    IPX是NOVELL用于NETWARE客户端/服务器的协议群组,避免了NETBEUI的弱点。但是,IPX具有完全的路由能力,可用于大型企业网。它允许有许多路由网络。包括32位网络地址,在单个环境中带来了新的不同弱点。

    IPX的可扩展性受到其高层广播通信和高开销的限制。服务广告协议(ServiceAdvertising Protocol,SAP)将路由网络中的主机数限制为几千。尽管SAP的局限性已经被智能路由器和服务器配置所克服,但是,大规模IPX网络的管理员仍是非常困难的工作。

    三、TCP/IP

    每种网络协议都有自己的优点,但是只有TCP/IP允许与Internet完全的连接。TCP/IP是在60年代由麻省理工学院和一些商业组织为美国国防部开发的,即便遭到核攻击而破坏了大部分网络,TCP/IP仍然能够维持有效的通信。ARPANET就是由基于协议开发的,并发展成为作为科学家和工程师交流媒体的Internet。

    TCP/IP同时具备了可扩展性和可靠性的需求。不幸的是牺牲了速度和效率(可是:TCP/IP的开发受到了政府的资助)。

    Internet公用化以后,人们开始发现全球网的强大功能。Internet的普遍性是TCP/IP至今仍然使用的原因。常常在没有意识到的情况下,用户就在自己的PC上安装了TCP/IP栈,从而使该网络协议在全球应用最广。

    TCP/IP的32位寻址功能方案不足以支持即将加入Internet的主机和网络数。因而可能代替当前实现的标准是IPv6。














    展开全文
  • 常见网络协议

    万次阅读 多人点赞 2019-03-26 13:32:50
    一、网络协议 二、TCP(Transmission Control Protocol,传输控制协议)       TCP头格式      TCP协议中的三次握手和四次挥手      TCP报文抓取工具三、...

    一、网络协议

    二、TCP(Transmission Control Protocol,传输控制协议)

          TCP头格式
          TCP协议中的三次握手和四次挥手
          TCP报文抓取工具
    三、HTTP(HyperText Transfer Protocol,超文本传输协议)

          请求报文结构
          请求报文样例
          请求报文参数详解
          响应报文结构
          响应报文样例
          响应报文参数详解
          HTTP报文抓取工具
          Session和Cookie
    四、相关资料

    ---------------------------------------------------------------------------------------------

    一、网络协议

           国际标准化组织(International Standard Organization,ISO)公布了开放系统互连参考模型(OSI/RM)。OSI/RM是一种分层的体系结构,参考模型共有7层。
    TCP/IP(Transmission Control Protocol/Internet Protocol)作为Internet的核心协议。它是个协议族,包含多种协议。
    分层的基本想法是每一层都在它的下层提供的服务基础上提供更高级的增值服务,而最高层提供能运行分布式应用程序的服务。

    发送请求的过程是从最顶层(应用层)出发,每一层负责封装属于自己的信息到请求中,最后将一整个请求发送给对方。
    接收请求的过程是从最底层(网络接口层)开始,每一层的协议负责解析属于自己的东西,比如网际层(IP)处理ip信息,传输层(TCP)处理点对点的端口,应用层(HTTP)处理Request或Response的Line\Header\Body。

     

    二、TCP(Transmission Control Protocol,传输控制协议)

          TCP是一种面向连接(连接导向)的、可靠的基于字节流的传输层通信协议。TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认、对失序的数据重新排序、丢弃重复数据。
    TCP的特点有:

    • TCP是面向连接的运输层协议
    • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
    • TCP提供可靠交付的服务
    • TCP提供全双工通信。数据在两个方向上独立的进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号。
    • 面向字节流。面向字节流的含义:虽然应用程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅是一连串的无结构的字节流。

    1、TCP头格式

    (1)   Source Port(源端口号):数据发起者的端口号,16bit。
    (2)   Destination Port(目的端口号):数据接收者的端口号,16bit。
    (3)   Sequence Number(顺序号码,Seq):用于在数据通信中解决网络包乱序(reordering)问题,以保证应用层接收到的数据不会因为网络上的传输问题而乱序(TCP会用这个顺序号码来拼接数据),32bit。
    (4)   Acknowledgment Number(确认号码,ack):是数据接收方期望收到发送方在下一个报文段的顺序号码(Seq),因此确认号码应当是上次已成功收到顺序号码(Seq)加1,32bit。
    (5)   Offset(TCP报文头长度):用于存储报文头中有多少个32bit(上图的一行),存储长度为4bit,最大可表示(2^3+2^2+2^1+1)*32bit=60bytes的报文头。最小取值5,5*32bit=20bytes。
    (6)   Reserved(保留):6bit, 均为0
    (7)   TCP Flags(TCP标志位)每个长度均为1bit
              CWR:压缩,TCP Flags值0x80。
              ECE:拥塞,0x40。
              URG:紧急,0x20。当URG=1时,表示报文段中有紧急数据,应尽快传送。
              ACK:确认,0x10。当ACK = 1时,代表这是一个确认的TCP包,取值0则不是确认包。
              PSH:推送,0x08。当发送端PSH=1时,接收端尽快的交付给应用进程。
              RST:复位,0x04。当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接。
              SYN:同步,0x02。在建立连接是用来同步序号。SYN=1, ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。
              FIN:终止,0x01。当FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。
    (8)   窗口:用来控制对方发送的数据量,通知发放已确定的发送窗口上限。
    (9)   检验和:该字段检验的范围包括头部和数据这两部分。由发端计算和存储,并由收端进行验证。
    (10) 紧急指针:紧急指针在URG=1时才有效,它指出本报文段中的紧急数据的字节数。
    (11) TCP选项:长度可变,最长可达40字节

    备注:ISN(Inital Sequence Number):初始化Sequence Number,发生在建立连接时。

    2、TCP协议中的三次握手和四次挥手

    三次握手可以理解成:

    我打电话给你你没看到,一会之后你又打电话给我问有什么事,我再给你说我有什么什么事

    四次挥手可以理解成:

    我给你说我不想再要你送的东西了,你说不行啊还有很多没有送完(继续在送),(送完啦)你说已经把所有东西都送给我啦,我说我收到了那就结束吧-----------

     

    特别注意

    Seq:是发送方当前报文的顺序号码。
    ack:是发送方期望对方在下次返回报文中给回的Seq。

    建立连接需要三次握手

    第一次握手:客户端向服务端发送连接请求包,标志位SYN(同步序号)置为1,顺序号码为X=0。

    第二次握手:服务端收到客户端发过来报文,由SYN=1知道客户端要求建立联机,则为这次连接分配资源。并向客户端发送一个SYN和ACK都置为1的TCP报文,设置初始顺序号码Y=0,将确认序号(ack)设置为上一次客户端发送过来的顺序号(Seq)加1,即X+1 = 0+1=1。

    第三次握手:客户端收到服务端发来的包后检查确认号码(ack)是否正确,即第一次发送的Seq加1(X+1=1)。以及标志位ACK是否为1。若正确,服务端再次发送确认包,ACK标志位为1,SYN标志位为0。确认号码(ack)=Y+1=0+1=1,发送顺序号码(Seq)为X+1=1。Server收到后确认号码值与ACK=1则连接建立成功,可以传送数据了。

    断开连接需要四次挥手

    提醒:中断连接端可以是Client端,也可以是Server端。只要将下面两角色互换即可。
    第一次挥手:客户端给服务端发送FIN报文,用来关闭客户端到服务端的数据传送。将标志位FIN和ACK置为1,顺序号码为X=1,确认号码为Z=1。意思是说”我Client端没有数据要发给你了,但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK过来。”

    第二次挥手:服务端收到FIN后,发回一个ACK(标志位ACK=1),确认号码为收到的顺序号码加1,即X=X+1=2。顺序号码为收到的确认号码=Z。意思是说“你的FIN请求我收到了,但是我还没准备好,请继续你等我的消息" 这个时候客户端就进入FIN_WAIT状态,继续等待服务端的FIN报文。

    第三次挥手:当服务端确定数据已发送完成,则向客户端发送FIN报文,关闭与客户端的连接。标志位FIN和ACK置为1,顺序号码为Y=1,确认号码为X=2。意思是告诉Client端“好了,我这边数据发完了,准备好关闭连接了。”

    第四次挥手:客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认号码为收到的顺序号码加1,即Y+1=2。顺序号码为收到的确认号码X=2。意思是“我Client端知道可以关闭连接了,但是我还是不相信网络,怕 Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。“(在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。)

    为什么关闭的时候却是四次挥(握)手?
    因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

    3、TCP报文抓取工具:Wireshark

    捕获过滤器中填入表达式:host www.cnblogs.com and port 80(80等效于http)
    有多个TCP流时在显示过滤器中填入表达式:tcp.stream eq 0 筛选出第一个TCP流(包含完整的一次TCP连接:三次握手和四次挥手)

     

    每条记录都有如下协议层
    (1) Frame:   物理层的数据帧概况
    (2)Ethernet II: 数据链路层以太网帧头部信息
    (3) Internet Protocol Version 4: 互联网层IP包头部信息
    (4)Transmission Control Protocol:  传输层的数据段头部信息,此处是TCP
    (5) Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议

     

     

    三、HTTP(HyperText Transfer Protocol,超文本传输协议)

          HTTP是一个应用层协议,虽然在2015年已推出HTTP/2版本,并被主要的web浏览器和web服务器支持。但目前使用最广泛的还是HTTP/1.1版本。有关历史请查阅这里
    它的主要特点可概括如下:

    • 支持客户/服务器模式。
    • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
    • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
    • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
    • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。为了解决这个问题, Web程序引入了Cookie机制来维护状态。

    另外,HTTP请求报文和响应报文都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。将在下面详细讲解。

    1、请求报文结构

    报文中的数据都使用ASCII编码,各个字段的长度是不确定的(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

    2、请求报文样例

    复制代码
    复制代码
    POST /search HTTP/1.1  
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, 
    application/msword, application/x-silverlight, application/x-shockwave-flash, */*  
    Referer: http://www.google.cn/  
    Accept-Language: zh-cn  
    Accept-Encoding: gzip, deflate  
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)  
    Host: www.google.cn 
    Connection: Keep-Alive  
    Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g; 
    NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y-
    FxlRugatx63JLv7CWMD6UB_O_r  
    

    hl=zh-CN&source=hp&q=domety

    复制代码
    复制代码

     

    3、请求报文参数详解

    请求方法

    所有请求方法名称全为大写,目前有9种:

    备注
    安全性:https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
    幂等性:表示的操作至多只会被处理一次,每次调用都将返回第一次调用时的处理结果。
    关于HTTP请求GET和POST的区别
    (1).提交形式:
       GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.  POST方法是把提交的数据放在HTTP包的Body中.
    (2).传输数据的大小:
       HTTP协议本身没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。 而在实际开发中存在的限制主要有:
       GET:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
       因此对于GET提交时,传输数据就会受到URL长度的限制。
       POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。
    (3).安全性:
        POST的安全性要比GET的安全性高,具有真正的Security的含义。而且通过GET提交数据,用户名和密码将明文出现在URL上,因为登录页面有可能被浏览器缓存,其他用户浏览历史纪录就可以拿到账号和密码了。

    请求报头域

    报头域指头部中的Key,且不分大小写。

    4、响应报文结构

    如所见,响应报文结构与请求报文结构唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。

    5、响应报文样例

    复制代码
    复制代码
    HTTP/1.1 200 OK
    Date: Mon, 23 May 2005 22:38:34 GMT
    Content-Type: text/html; charset=UTF-8
    Content-Encoding: UTF-8
    Content-Length: 138
    Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
    Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
    ETag: "3f80f-1b6-3e1cb03b"
    Accept-Ranges: bytes
    Connection: close
    

    <html>
    <head>
    <title>An Example Page</title>
    </head>
    <body>
    Hello World, this is a very simple HTML document.
    </body>
    </html>

    复制代码
    复制代码

     

    6、响应报文参数详解

    响应状态码

    状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
    1xx:指示信息--表示请求已接收,继续处理。
    2xx:成功--表示请求已被成功接收、理解、接受。
    3xx:重定向--要完成请求必须进行更进一步的操作。
    4xx:客户端错误--请求有语法错误或请求无法实现。
    5xx:服务器端错误--服务器未能实现合法的请求。
    常用状态码:

    200 OK:成功返回状态,对应,GET,PUT,PATCH,DELETE。
    201 created  - 成功创建。
    302 Found:重定向,新的URL会在response中的Location中返回,浏览器将会使用新的URL发出新的Request。

                     例如在IE中输入http://www.google.com. HTTP服务器会返回304, IE取到Response中Location header的新URL, 又重新发送了一 个 Request.
    304 Not Modified:代表上次的文档已经被缓存了, 还可以继续使用。
    400 bad request   - 请求格式错误。
    401 unauthorized   - 未授权。
    403 forbidden   - 鉴权成功,但是该用户没有权限。
    404 not found - 请求的资源不存在。
    405 method not allowed - 该http方法不被允许。
    410 gone - 这个url对应的资源现在不可用。
    415 unsupported media type - 请求类型错误。
    422 unprocessable entity - 校验错误时用。
    429 too many request - 请求过多。
    500 Internal Server Error:服务器发生了不可预期的错误。
    503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

    响应报头域

    报头域指头部中的Key,且不分大小写。

    7、HTTP报文抓取工具

    Wireshark、Fiddler、HttpWatch(需结合IE)、Telnet
    Wireshark:
    在显示过滤器中填入表达式:http and ip.addr == 42.121.252.58 and tcp.port == 80 过滤出http的响应和请求流程

     

     

    8、Session和Cookie

    说到HTTP,就不得不提Session和Cookie。但严格来说,Session和Cookie并不是http协议的一部分。由于HTTP协议设计原则是无状态的,但是近年来出现了种种需求,其中cookie的作用就是为了解决HTTP协议无状态的缺陷所作出的努力。后来出现的session机制则是又一种在客户端与服务器之间保持状态的解决方案。 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。

    Session

    Session是可以存储针对于某一个用户的浏览器以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。 
    通常大家认为,只要关闭浏览器,session就消失,其实这是错误的理解。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留。由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间.

    (1)第一次访问某个web站点资源时,客户端提交没有带SessionID的请求(请求报文头没有Cookie头域信息)。
      而web服务器会检查是否有SessionID过来,没有则创建SessionID,并根据web程序自身定义在请求哪个资源时添加属于当前会话的信息(也可为空),这个信息列表以SessionID作为标识。然后将SessionID返回给客户端(通过响应报文头的Set-Cookie头域)。
    (2 )客户端再次访问同个web站点时,提交带有SessionID的请求(通过Cookie头域存储SessionID)。由服务端判断session是否失效,如果未失效,可查询属于当前会话的信息列表。如果失效,则创建新的session(产生新的SessionID),而原先的session(包含session带的信息列表)则丢失,无法访问。

    Cookie

    保存SessionID的方式可以采用Cookie,这样在交互过程中浏览器可以自动的按照规则把这个SessionID发回给服务器。Cookie的命名方式类似于SessionID。有时Cookie被人为的禁止,所以出现了其他机制以便在Cookie被禁止时仍然能够把SessionID传递回服务器。这种技术叫做URL重写,就是把SessionID直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://www.wantsoft.com/index.asp;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 。
    另一种是作为查询字符串附加在URL后面,表现形式为http://www.wantsoft.com/index?js ... 99zWpBng!-145788764 。

     

    展开全文
  • 课程内容如下: 通信协议的概念 ISO、OSI七层参考模型详解 TCP、IP模型详解 网络接口层详解 IP协议详解 IP地址和MAC地址特征分析 有了IP地址为什么还要使用MAC地址 ...UDP协议详解 ...网络通信协议(应用层)协议
  • 几种常见的网络协议

    千次阅读 2019-04-17 23:02:10
    常见的网络协议有:TCP/IP协议、UDP协议、HTTP协议、FTP协议、Telnet协议、SMTP协议、NFS协议等。 TCP/IP 协议 传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的...

    常见的网络协议有:TCP/IP协议、UDP协议、HTTP协议、FTP协议、Telnet协议、SMTP协议、NFS协议等。

    TCP/IP 协议

    传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。

    TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

    IP

    IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

    高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

    TCP

    TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。

    TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。

    如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

    TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

    面向连接的服务(例如TelnetFTPrloginX WindowsSMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

    UDP 协议

    UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。

    UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。

    UDPTCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。

    欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。

    HTTP 协议

    详情

    FTP 协议

    FTP协议:文件传输协议。

    Telnet 协议

    Telnet协议(远程登录),是 TCP/IP 协议族中应用最广泛的协议,是Internet远程登录服务的标准协议和主要方式。Telnet协议的目的是提供一个相对通用的,双向的,面向八位字节的通信方法,允许界面终端设备和面向终端的过程能通过一个标准过程进行互相交互。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。

    使用 Telnet 协议进行远程登录时需要满足一些条件:

        1、本地计算机上必须装有包含Telnet协议的客户程序;

        2、必须知道远程主机的IP地址或域名;

        3、必须知道登录标识与口令即登录账户与密码。

    满足上述三个条件后,即可用 Telnet  远程登录服务:

        1、本地与远程主机建立连接。该过程实际上是建立一个TCP连接,此时就需要用到远程主机的IP地址或域名;

        2、在本地终端上输入用户名和口令,之后便可以输入一些命令与字符,用户名和口令及输入的任何命令或字符都将以NVT格式    传送到远程主机上。该过程实际上是从本地主机向远程主机发送一个IP数据包;

        3、将远程主机输出的NVT格式的数据转换为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;

        4、执行完所有任务之后,本地终端对远程主机进行撤销连接。该过程就是撤销一个TCP连接。

    在执行Telnet服务时有个重要的部分,即NVT(网络虚拟终端 Network Virtual Terminal)。它是一种虚拟终端设备,被客户和服务器采用,用来建立数据表示和解释的一致性。Telnet使用一种堆成的数据表示,当每个客户机发送数据时,把它的本地终端的字符表示影射到NVT的字符表示上,当接收数据时,又把NVT的表示影射到本地字符集合上。

    Telnet有许多应用,例如远程桌面;客户机作为远程主机的仿真终端,使用远程高性能的计算机资源;客户机通过Telnet访问BBS、Archie服务器,查找软件等。但是Telnet的应用不仅方便了我们进行远程登录,也给hacker们提供了又一种入侵手段和后门。

    现在对于Telnet的使用也在减少,主要有三方面原因:

        1、个人计算机的性能越来越强,只是在别人计算机中运行程序的要求逐渐减弱;

        2、Telnet服务器安全性欠佳,允许他人访问其操作系统和文件,是很大的漏洞;

        3、Telnet使用起来不是很容易,特别是对初学者来说。

    SMTP 协议

    SMTP协议:简单邮件传输协议,是一个相对简单的基于文本协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。

    NFS协议

    NFS,即网络文件系统,是一种用于文件共享的协议,允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

    NFS至少有两个主要部分:一台服务器和一台(或者更多)客户机。客户机远程访问存放在服务器上的数据。为了正常工作,一些进程需要被配置并运行。 

     

     

     

     

    展开全文
  • 解答:什么是网络协议

    千次阅读 2019-01-16 01:52:06
    我们常用的网络协议有哪些? 你先在浏览器里面输入 https://www.kaola.com ,这是一个URL。浏览器只知道名字是“www.kaola.com”,但是不知道具体的地点,所以不知道应该如何访问。于是,它打开地址簿去查找。可以...
  • 网络协议大全

    2018-08-28 22:48:49
    网络协议大全,一张图成功诠释了网络协议问题,令你豁然开朗
  • 网络号+主机号 CIDR表示法(常用) IP地址: 10.100.122.2/24:24代表32位中,前24位是网络号,后8位是主机号 广播地址:如果这个地址作为目标地址,所有10.100.122网络里面的机器都可以收到 10.100.122.255 子...
  • 网络协议

    2020-01-23 15:45:42
    网络可以认为有很多层,也可以认为有很多步骤,两个参考模型的区别。 数据格式 注意三种不同的叫法,分别对应了不同层的消息。 数据段 数据包 数据帧 数据链路层: 帧头:mac源地址以及目的地址 帧尾:加冗余码...
  • 网络基础之网络协议篇(一)

    万次阅读 2018-07-05 19:55:53
    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的...应用软件二、网络通信原理2.1 互联网的本质就是一系列的网络协议1、C/S 架构和B/S架构 client&lt;---基于网络...
  • 网络协议 -- HTTP协议

    万次阅读 多人点赞 2018-03-09 13:46:25
    一、HTTP协议介绍 1.1 什么是HTTP HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP协议位于TCP/IP协议栈的传输层。 HTTP是一个客户端和服务器端请求和应答的标准,主要用于从万维网(即WWW...
  • 网络协议、socket、webSocket

    万次阅读 多人点赞 2019-07-31 19:20:28
    一、网络协议 网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 1、OSI七层协议 OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。OSI模型有7层结构,从上到下分别...
  • 常见的网络协议

    千次阅读 2019-04-20 10:59:22
    FTP(File TransportProtocol,文件传输协议)是网络上两台计算机传送文件的协议,运 行在 TCP 之上,是通过 Internet 将文件从一台计算机传输到另一台计算机的一种途径。 TFTP(Trivial FileTransfer Pr...
  • 五层网络协议,各层功能,各层协议

    万次阅读 多人点赞 2018-05-11 11:21:01
    一、OSI七层模型OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。三、五层...
  • 网络协议 -- UDP协议(1)介绍

    万次阅读 多人点赞 2017-12-28 16:12:59
    一、什么是UDP协议? UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP的正式规范是IETF RFC...
  • 网络协议 -- 最全的网络协议

    万次阅读 多人点赞 2018-01-29 15:20:42
    转载自:http://www.52im.net 图片较大,建议单击放大或者下载后查看
  • OSI七层协议大白话解读

    万次阅读 多人点赞 2018-08-02 16:59:48
    互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白...
  • 网络协议逆向分析

    千次阅读 2017-03-19 21:07:42
    网络协议逆向分析
  • 使用wireshark抓包并进行网络协议分析

    万次阅读 多人点赞 2018-10-18 15:37:35
    今天想通过抓包实验,巩固一下所学习的网络协议。同时,在知识点上会加上以前遇到的一些问题。这次实验并不是对所有的网络协议都进行分析,而是从下面这个问题出发(面试常被问)。从这一过程中复习学过的网络协议。...
  • TCP/IP协议详解

    万次阅读 多人点赞 2019-05-11 08:40:41
    它是互联网协议(Internet Protocol Suite),一个网络通信模型,是互联网的一个基本的构架。 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超...
  • 计算机网络——3.网络协议工作原理

    千次阅读 2016-02-27 21:36:34
    网络协议是网络技术学习的基础和根本,它是为计算机网络中数据交换建立的某种规则、标准以及相关的约定。本文将讲解数据链路层协议ARP、网络层协议IP、传输层协议TCP和UDP、应用层协议HTTP、FTP、POP3等常用协议。
  • 计算机网络协议集合

    千次阅读 2018-03-21 09:17:26
    阅读目录 1. 网络层次划分2. OSI七层网络模型3. IP地址4. 子网掩码及网络划分5. ARP/RARP协议6. 路由选择协议7. TCP/IP协议8. UDP协议 9.... 计算机网络学习的核心内容就是网络协议的学习。网络...
  • 网络协议的类型、优缺点、作用

    千次阅读 2018-04-01 09:36:05
    一、网络协议的定义  ● 网络协议是一种特殊的软件,是计算机网络实现其功能的基本机制  ● 网络协议的本质是规则,即各种硬件和软件必须遵循的共同规则  ● 网络协议并不是一套单独的软件,他融合于其他所有...
  • 网络协议分析

    千次阅读 2019-05-27 17:39:10
    用来规定0和1的分组规则,以太网协议规定,一组电信号构成一个数据包,叫做"帧"(Frame).每一帧分成两个部分:Head和Data,其中head中包含源mac地址、目标mac地址 源mac地址如何知道目标mac地址?  使用A...
  • linux网络协议栈内核分析

    万次阅读 多人点赞 2016-06-04 15:21:49
    应用层的各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的。Linux Socket 是从 BSD Socket 发展而来的,它是 Linux 操作系统的重要组成部分之一,它是网络应用程序的基础。从...
  • 文章目录网络协议TCP/IP协议IP协议...网络协议 网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议 等。 TCP/IP协议 毫无疑问是这三大协议...
  • 网络协议面试题汇总

    千次阅读 2019-03-12 10:48:43
    Internet采用哪种网络协议?该协议的主要层次结构? TCP/IP协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础。 TCP/IP是用于...
  • 计算机网络协议层次

    万次阅读 多人点赞 2016-11-16 14:54:15
    本文介绍了计算机网络协议层次划分
  • 网络协议】IP协议、ARP协议、RARP协议

    千次阅读 多人点赞 2014-06-11 00:04:02
    前20字节和紧接其后的选项部分是IP数据报的首部,前20个字节是固定的,选项可有可无。...TCP/IP首部中的所有二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序,其他形式存储的二进制数据,如little
  • 视频网络协议

    千次阅读 2016-04-20 22:02:48
    视频网络中的协议有很多,一般开发中经常用Http渐进下载协议,RTSP/RTP/RTCP协议族,RTMP等流媒体协议,前两者是共有协议,并有专门机构来维护,或者是Adobe的私有协议,并未完全公开,接下来主要说一下前两者协议。...

空空如也

1 2 3 4 5 ... 20
收藏数 2,081,413
精华内容 832,565
关键字:

网络协议