计算机网络协议_计算机网络分为哪几层?有什么协议属于哪一层,协议对应的端口号 - CSDN
精华内容
参与话题
  • 计算机网络协议汇总

    千次阅读 2015-10-18 16:26:03
    计算机网络OSI七层模型:物理层、数据层、网络层、传输层、会话层、表示层、应用层。 一、物理层 OSI模型的最低层或第一层,规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程...

    计算机网络OSI七层模型:物理层、数据层、网络层、传输层、会话层、表示层、应用层。


    一、物理层

    OSI模型的最低层或第一层,规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性,为上层协议提供了一个传输数据的物理媒体。在这一层,协议数据单元为比特(bit)。在物理层的互联设备包括:集线器(Hub)、中继器(Repeater)等。

    二、数据层

    OSI模型的第二层,它控制网络层与物理层之间的通信,其主要功能是在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,协议数据单元为帧(frame)。

    数据链路层协议的代表包括:LLC、SDLC、HDLC、MAC、PPP、STP、帧中继、CSMA/CD、CSMA/CA等。

    在数据链路层的互联设备包括:网桥(Bridge)、交换机(Switch)等。

    逻辑链路控制LLC(Logical Link Control)协议,同步数据链路控制SDLC(Synchronous Data Link Control)协议

    高级数据链路控制HDLC(High-Level Data Link Control)协议

    多路访问控制MAC(Multiple Access Control)协议,点对点协议PPP(Point to Point Protocol),生成树协议STP(Spanning Tree Protocol)

    带冲突检测的载波监听多路访问CSMA/CD(Carrier Sense Multiple Access with Collision Detection)

    带冲突避免的载波侦听多路访问CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)

    三、网络层(Network Layer)

    OSI模型的第三层,其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。该层的作用包括:对子网间的数据包进行路由选择,实现拥塞控制、网际互连等功能。在这一层,协议数据单元为数据包(packet)。

    网络层协议的代表包括:IP、ARP、IPX、DDP、RIP、OSPF、RARP、ICMP、IGMP、NetBEUI等。

    在网络层的互联设备包括:路由器(Router)等。

    互联网协议IP(Internet Protocol),地址解析协议ARP(Address Resolution Protocol)

    联网分组交换协议IPX(Internetwork Packet Exchange Protocol),数据报传输协议DDP(Datagram Delivery Protocol)

    路由信息协议RIP(Routing Information Protocol),开放最短路由优先协议OSPF(Open Shortest Path First)

    反向地址转换协议RARP(Reverse Address Resolution Protocol),互联网控制报文协议ICMP(Internet Control Message Protocol)

    互联网组管理协议IGMP(Internet Group Management Protocol),NetBEUI(NetBIOS ExtendedUser Internet,NetBIOS用户扩展接口协议)

    Ethernet(以太网协议),NWLink--IPX/SPX传输协议的微软实现

    四、传输层(Transport Layer)

    OSI模型中最重要的一层,是第一个端到端,即主机到主机的层次。其主要功能是负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。

    在这一层,协议数据单元为数据段(segment)。

    传输层协议的代表包括:TCP、UDP、SPX等。

    传输控制协议TCP(Transmission Control Protocol):传输控制协议提供可靠的面向连接的服务,传输数据前须先建立连接,结束后释放。可靠的全双工信道。可靠、有序、无丢失、不重复。

    用户数据报协议UDP(User Datagram Protocol):用户数据报协议发送数据前无需建立连接,不使用拥塞控制,不保证可靠交付,最大努力交付。 

    序列分组交换协议SPX(Sequenced Packet Exchange Protocol)

    名字绑定协议NBP(Name Binding Protocol)

    ATP(AppleTalk事务协议)--Apple公司的网络协议族,用于管理会话

    五、会话层(Session Layer)

    OSI模型的第五层,管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。其主要功能是建立通信链接,保持会话过程通信链接的畅通,利用在数据中插入校验点来同步两个结点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送。

    六、表示层(Presentation Layer)

    OSI模型的第六层,应用程序和网络之间的翻译官,负责对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的解密和加密、压缩、格式转换等。

    七、应用层(Application Layer)

    OSI模型的第七层,负责为操作系统或网络应用程序提供访问网络服务的接口。术语“应用层”并不是指运行在网络上的某个特别应用程序,应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。

    应用层协议的代表包括:FTP、Telnet、SMTP、TFTP、HTTP、POP3、NNTP、IMAP4、HTTPS、SNMP、DNS、SMB、BOOTP、NFS、NCP等。

    在应用层的互联设备包括:网关(Gateway)等。

    文件传输协议FTP(File Transfer Protocol),端口号为21;远程终端协议Telnet(Remote Terminal Protocol),端口号为23;

    简单邮件传输协议SMTP(Simple Mail Transfer Protocol),端口号为25;简单文件传输协议TFTP(Trivial File Transfer Protocol),端口号为69;

    超文本传输协议HTTP(Hypertext Transfer Protocol),端口号为80;邮局协议POP3(Post Office Protocol),端口号为110;

    网络新闻传输协议NNTP(Network News Transport Protocol),端口号为119;

    互联网邮件访问协议IMAP4(Internet Mail Access Protocol),端口号为143;

    安全套接层超文本传输协议HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),端口号为443;

    简单网络管理协议SNMP(Simple Network Management Protocol);域名服务协议DNS(Domain Name Service)

    服务器消息块协议SMB(Server Message Block Protocol);自举协议BOOTP(Bootstrap Protocol)

    网络文件系统NFS(Network File System);网络核心协议NCP(NetWare Core Protocol)


    展开全文
  • 计算机网络协议总结

    万次阅读 多人点赞 2019-05-12 20:39:00
    计算机网络协议全面总结 一、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)

    展开全文
  • 计算机网络几种常见协议

    千次阅读 2019-08-12 03:20:00
    一 .典型协议: ...网络层: 常见的协议有 IP 协议,ICMP 协议,IGMP 协议 网络接口层: 常见的协议有 ARP 协议,RARP 协议 TCP 传输控协议(TransmissionControl Protocol)是一种面向连接的,...

    一 .典型协议:

    传输层: 常见的协议有 TCP/UDP 协议

    应用层: 常见的协议有 HTTP,FTP 协议

    网络层: 常见的协议有 IP 协议,ICMP 协议,IGMP 协议

    网络接口层: 常见的协议有 ARP 协议,RARP 协议

    TCP 传输控协议(TransmissionControl Protocol)是一种面向连接的,可靠的,基于字节流的传输层通信协议

    UDP 用户数据包协议(UserDatagram Protocol)是 OSI 参考模型中一种无连接的传输层协议,提供面向事物的简单不可靠信息传送服务

    HTTP 超文本传输系协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种协议

    FTP 文件传输协议(File Transfer Protocol)

    IP 协议是英特网互联协议(Internet Protocol)

    ICMP 协议是 Internet 控制报文协议(Internet Control Message Protocol),它是 TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息

    IGMP 协议是 Internet 网际组管理协议,是英特网协议家族中的一个组播协议。该协议运行在主机和组播路由之间

    ARP 协议是正向地址解析协议(Address Resolution Protocol),通过已知的 IP,寻找对应主机的 MAC 地址

    RARP 协议是方向地址解析协议,通过 MAC 地址确定 IP地址

    TFTP 协议是 TCP/IP 协议族中的一个用来在客户机和服务器之间进行简单文件传输的协议,提供不复杂、开销不大 的文件传输协议

    DHCP 协议,动态主机配置协议,是一种让系统得以连接到网络上的,并获取 所需要的配置参数的手段

    NAT 协议,网络地址转换属接入广域网(WAN),是将一种私有(保留)地址转换为合法IP地址的转换技术

    二.TCP 和 UDP对应的协议

    TCP 对应的协议:

    (1)、FTP:定义了文件传输协议,使用 21 端口。

    (2)、Telnet:远程登录协议。使用 23 号端口,用户可以以自己的身份远程登录到计算机上,可提供基于DOS模式下的通信服务。

    (3)、SMTP:邮件传送协议,用于发送邮件。服务器开放的端口是 25 号端口。

    (4)、POP3 :它和 SMTP 对应,POP3用于接收协议。所用的端口是 110。

    (5)、HTTP:是从 Web 服务器传送超文本到本地浏览器的传送协议。

    UDP对应的协议:

    (1)、DNS:用于域名解析服务,将域名地址转换为 IP 地址。DNS 用的是 53号端口。

    (2)、SNMP:简单网络管理协议,使用 161 号端口,是用来管理网络设备。

    (3)、TFTP:简单文件传输协议,在 69 号端口上使用 UDP 服务。

    展开全文
  • 计算机网络协议——通信协议综述

    万次阅读 多人点赞 2019-09-18 17:56:18
    通信协议综述概述一、为什么学习网络协议1.1 常见的网络协议二、网络分层的真正含义2.1 为什么网络要分层?2.2 浏览点击请求过程2.3 揭秘层与层之间的关系三、ifconfig 命令行的由来3.1 ip地址3.2 无类型域间选路...

    这个专栏的计算机网络协议,我是在极客时间上学习 已经有三万多人购买的刘超老师趣谈网络协议专栏,讲的特别好,像看小说一样学习到了平时很枯燥的知识点,计算机网络的书籍太枯燥,感兴趣的同学可以去付费购买,绝对物超所值,本文就是对自己学习专栏的总结,评论区可以留下你的问题,咱们一起讨论!


    概述

    本文也是根据专栏里的板块,对通信网络协议做一个综述,共分为四节去进行介绍;

    • 为什么学习网络协议?
    • 网络协议分层的真正含义;
    • ifconfig命令行的背后;
    • DHCP和PXE:ip的由来;

    一、为什么学习网络协议

    协议

    协议的三要素是:语法、语义、顺序
    连通互联网世界,只教给一台电脑做什么是不够的,需要教会一大片机器做什么,这就是网络协议。只有通过网络协议,才能够使得一大片机器互相协作、共同完成一件事。

    1.1 常见的网络协议

    采用一个下单购物的场景,看看整个过程运用了哪些网络协议。


    首先,在浏览器中输入一个网址www.taobao.com URL,浏览器只知道名字是www.taobao.com,但是不知道具体的地点,所以不知道该如何访问;

    于是,打开地址簿去查找,可以使用一般的地址簿DNS去查找,也可以采用更为精确的地址簿查找协议HTTPDNS

    无论哪一种查找,最后都会得到一个地址:106.114.134.24(任意赋值),这个是IP地址,相当于你在互联网世界中的“门牌号”。知道了目标地址,浏览器开始打包他们的请求。对于普通的浏览请求,往往会采用HTTP协议;但是对于购物的请求,往往需要进行加密传输,因而使用HTTPS协议。无论是什么协议,里面都会声明“你要买什么和买多少”。HTTP头中包含了请求的信息:

    HTTP
    DNS、HTTP、HTTPS所在的层为应用层;


    经过封装以后,浏览器会将应用层的包交给下一层去完成,然后通过socket编程来实现。下一层是传输层,传输层有两种协议:

    • 无连接的协议UDP
    • 面向连接的协议TCP

    对于支付来说,往往采用TCP协议,所谓的面向连接就是,TCP会保证这个包能够到达目的地。如果不能到达,就会重新发送,直至到达;TCP协议中有两个端口,一个是浏览器监听的端口,一个是电商服务器监听的端口。操作系统往往通过端口来判断,它得到的包应该给哪个进程;
    TCP协议


    传输层封装完之后,浏览器会将包交给操作系统的网络层。网络层的协议是IP协议,在IP协议里面会有源IP地址,即浏览器的所在的机器的IP地址和目标IP地址,也就是电商所在的IP地址
    IP地址
    目标IP就是电商地址的门牌号,操作系统知道了目的地的门牌号,就要想着该如何找到目的地;

    首先先判断,目的地是在本地还是在外地;电商系统一般都在那遥远的地方,就比如你到国外要去海关一样,去外地就要经过网关。操作系统启动以后,就会被DHCP协议配置IP地址,以及默认的网关IP地址192.168.1.1;

    如果是本地通信就是靠吼——ARP协议,操作系统大吼一声,谁是192.168.1.1啊?网关会回答它,我就是。这个本地地址就是MAC地址,吼靠的就是ARP协议;

    IP包

    于是操作系统将IP包交给了下一层,也就是MAC层。网卡再将包发出去,包里面包含MAC地址,因此可以到达网关。网关收到包以后,会根据自己的知识,判断下一步该怎么走。网关往往是一个路由器,到了某个IP地址应该怎么走,这个叫作路由表

    路由器就像唐僧西天取经路过的一个个国家之间的城关,每个城关都连接着两个国家,每一个国家都相当于一个局域网,每个国家的内部都可以使用MAC地址进行通信;

    一旦跨越城关,就需要拿出IP头来,里面记录着IP源地址(东土大唐),欲前往西天拜佛取经(目的IP地址),路过宝地,借宿一晚,请问接下来该如何走?
    在这里插入图片描述
    城关与城关之间的沟通协议叫做路由协议,常用的由OSPF和BGP

    城关与城关之间是一个国家,网络包知道了要去哪个城关的时候,还是要使用国家内部的MAC地址,通过下一个城关的MAC地址,找到下一个城关,然后在问下一步该怎么走,一直走到最后一个城关。最后一个城关知道这个网络包要去的地方。于是,对着这个国家吼一声,谁是目标IP啊?目标服务器就会回复一个MAC地址。网络包过关后,通过这个MAC地址就能找到目标服务器;


    目标服务器发现MAC地址对上了以后,取下MAC头来,发送给操作系统的网络层,发现IP地址对上了,在取下IP头。IP头里会写上一层封装的TCP协议,然后交给传输层,即TCP层

    在这一层中,对于收到的每个包,都会有一个回复说明收到了。这个回复的包绝非这次单次请求的结果,例如购物是否成功,扣了多少钱等,而仅仅是TCP层的一个说明,即收到之后的回复。当然这个回复,会沿着刚才来的方向走回去,报个平安,防止在传输过程中造成的丢包等。

    如果过一段时间还没有收到的话,发的端TCP层会重新发送这个包,还是上面的请求,直到收到平安到达的回复。这个重试绝非你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲,就发送了一次下单请求,TCP层不断自己闷头重试。除非TCP这一层出了问题,例如连接断了,才轮到浏览器的应用层重新发送下单请求。

    当网络包平安到达TCP层之后,TCP头中有目标端口号,通过这个端口号,可以找到电商网站的进程正在监听这个端口号,假设一个Tomcat,将这个包发给电商网站。

    电商网站的进程得到的是HTTP请求知道要买什么东西,买多少。往往一个电商网站最初接待请求的这个Tomcat只是个接待员,负责统筹处理这个请求,而不是所有的事情都自己做。例如,这个接待员要告诉专门管理订单的进程,登记要买某个商品,买多少,要告诉管理库存的进程,库存要减少多少,要告诉支付的进程,应该付多少钱,等等。

    如何告诉相关的进程呢?往往通过RPC调用,即远程过程调用的方式来实现。远程过程调用就是当告诉管理订单进程的时候,接待员不用关心中间的网络互连问题,会由RPC框架统一处理。RPC框架有很多种,有基于HTTP协议放在HTTP的报文里面的,有直接封装在TCP报文里面的。

    当接待员发现相应的部门都处理完毕,就回复一个HTTPS的包,告知下单成功。这个HTTPS的包,会像来的时候一样,经过千难万险到达你的个人电脑,最终进入浏览器,显示支付成功;

    看到这里相信你对于自己之前学过的计算机网络知识有一个连串的感觉了吧,很多公司的面试题都会问在浏览器中输入一个URL的整个过程? 把这一连串说完,相信你的面试官也会觉得你学的很扎实;
    网络协议

    二、网络分层的真正含义

    计算机网络知识点需要背诵,但是更是要理解透彻;

    2.1 为什么网络要分层?

    因为不同层次之间有不同的沟通方式,叫做协议。就像一家公司也是分“层次”,分为总经理、经理、组长、员工,每个人之间都有不同的沟通方式;

    因为复杂的程序都要分层,想象网络包就是一段Buffer,或者一块内存,是有格式的。同时,想象自己是一个处理网络包的程序,而且这个程序可以跑在电脑上,可以跑在服务器上,可以跑在交换机上,也可以跑在路由器上。你想象自己有很多的网口,从某个口拿进一个网络包来,用自己的程序处理一下,再从另一个网口发送出去;

    当然网络包的格式很复杂,这个程序也很复杂,复杂的程序都要分层,这是程序设计的要求。

    2.2 浏览点击请求过程

    浏览点击请求过程如下所示:
    在这里插入图片描述
    在这里插入图片描述
    假设你发现这个包的MAC地址和你的相符,那说明就是发给你的,于是需要调用process_layer3(buffer):这个时候,Buffer里面往往就没有二层的头了,因为已经在上一个函数的处理过程中拿掉了,或者将开始的偏移量移动了一下。在这个函数里面,摘掉三层的头,看看到底是发送给自己的,还是希望自己转发出去的;

    如果IP地址不是自己的,那就应该转发出去;如果IP地址是自己的,那就是发给自己的。根据IP头里面的标识,拿掉三层的头,进行下一层的处理,到底是调用process_tcp(buffer)呢,还是调用process_udp(buffer)呢?

    假设地址是TCP,就会调用process_tcp(Buffer)。这时候,Buffer里面没有三层的头,就需要查看四层的头,看这是一个发起,还是一个应答,又或者是一个正常的数据包,然后分别由不同的逻辑进行处理。如果是发起或者应答,接下来可能要发送一个回复包;如果是一个正常的数据包,就需要交给上层了。交给谁呢?是不是有**process_http(buffer)**函数呢?

    如果你是一个网络包处理程序,你不需要有process_http(buffer),而是应该交给应用去处理。交给哪个应用呢?在四层的头里面有端口号,不同的应用监听不同的端口号。如果发现浏览器应用在监听这个端口,那你发给浏览器就行了。至于浏览器怎么处理,和你没有关系;

    浏览器是解析HTML,显示出页面来。当你再次点击鼠标,点击动作被浏览器捕获,于是浏览器知道又会发起另一个HTTP请求了,于是使用端口号,将请求发送给你。

    你应该调用send_tcp(buffer)。不用说,Buffer里面就是HTTP请求的内容。这个函数里面加一个TCP的头,记录下源端口号。浏览器会给你目的端口号,一般为80端口;

    然后调用send_layer3(buffer)。Buffer里面已经有了HTTP的头和内容,以及TCP的头。在这个函数里面加一个IP的头,记录下源IP的地址和目标IP的地址;随后调用send_layer2(buffer),**Buffer里面已经有了HTTP的头和内容、TCP的头,以及IP的头。这个函数里面要加一下MAC的头,记录下源MAC地址,得到的就是本机器的MAC地址和目标的MAC地址。**不过,这个还要看当前知道不知道,知道就直接加上;不知道的话,就要通过一定的协议处理过程,找到MAC地址。反正要填一个,不能空着;

    2.3 揭秘层与层之间的关系

    现实生活中,往往是员工说一句,组长补充两句,然后经理补充两句,最后总经理再补充两句。但是在网络世界,应该是总经理说话,经理补充两句,组长补充两句,员工再补充两句。

    TCP在三次握手时,TCP每一个消息都会带着IP层和MAC层。因为,TCP每次发送一个消息,IP层和MAC层的所有机制都要重新运行一次,所以TCP在三次握手时,IP和MAC也运行了好久。

    只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层;如果一个HTTP协议的包跑在网络上,它一定是完整的。无论这个包经过哪些设备,它都是完整的。所谓的二层设备、三层设备只是跑在设备上的程序不同;

    • 二层设备:只把MAC头摘下来,看看到底是丢弃、转发,还是自己留着;
    • 三层设备:把MAC头摘下来之后,再把IP头摘下来,看看到底是丢弃、转发,还是自己留着;

    三、ifconfig 命令行的由来

    ifconfig是linux系统中查询ip地址的一个命令,windows是ipconfig;

    3.1 ip地址

    IP地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号。
    例如:10.100.122.2就是一个IP地址,地址被分为四个部分,每个部分8个bit,所以IP地址总共是32位;

    IP地址被分成了5类,A-E类
    IP地址
    在网络地址中,A、B、C类主要分为两个部分,前一部分是网络号,后一部分是主机号。大家都是六单元1001号,你是小区A的,我是小区B的;

    ip地址范围

    3.2 无类型域间选路(CIDR)

    无类型域间选路,简称CIDR,将IP地址一分为二,前面是网络号,后面是主机号。10.100.122.2/24,这个IP地址中有一个斜杠,斜杠后面有个数字24,这种地址表示形式,就是CIDR,后面24的意思是,32位中,前24位是网络号,后8位是主机号。

    伴随着CIDR存在的,一个是广播地址,10.100.122.125,如果发送这个地址,所有10.100.122网络内的机器都可以收到,另一个是子网掩码,255.255.255.0

    将子网掩码和IP地址按位计算AND,就可以得到网络号,那么上面的ip地址与子网掩码按位取AND,网络号就是10.100.122.0;(1和任意数值取AND,值不变;0和任意数值取AND,即为0);

    3.3 公有IP地址和私有IP地址

    在这里插入图片描述
    平时我们在办公室、学校、家里的IP地址,一般都是私有IP地址,因为这些地址,允许组织内部的IP地址自己管理、自己分配,因此可以重复。就比如你们学校可能由六单元一号,我们学校可能也有六单元1号。

    但是,一旦离开学校就需要使用公有IP地址,就像上海市南京西路88号,这个是国家同统一分配的。公有IP地址,由相关的组织去分配,如果使用,需要购买。

    192.168.0.x,是最常见的私有IP地址,家里有wifi,对应就有一个ip地址,但是一般家庭中的上网设备不会超过256个,所以/24基本就够用了。

    举例:CIDR中容易犯错的点
    16.158.165.91/22,这个CIDR,求网络中的第一个地址、子网掩码和广播地址
    16.158的部分不会动,它占了前16位。中间的165,变为二进制为‭10100101‬。除了前面的16位,还剩6位。所以,这8位中前6位是网络号,16.158.<101001>,而**<01>.91是机器号**;所以第一个地址是16.158.<101001><00>.1,即16.158.164.1,子网掩码是255.255.<111111><00>.0,即255.255.252.0,广播地址是16.158.<101001><11>.255,即16.158.167.255.

    这五类地址中,还有一类D类是组播地址,使用这一类地址,属于某个组的机器都能够收到,这就有点类似于公司中大家加入了一个邮件组,发送邮件,加入这个组的大家都能收到;

    IP地址的后面有个scope对于eth0这张网卡来讲,是global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于lo来讲,是host,说明这张网卡仅仅可以供本机相互通信;

    lo又被称为loopback,又称环回接口,往往会被分配到127.0.0.1这个地址,这个地址可以用于本机通信,经过内核处理以后直接返回,不会在任何网络中出现;

    3.4 MAC地址

    在IP地址的上一行是link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,这个被称为MAC地址,是一个网卡的物理地址,用十六进制,6个byte表示。既然已经知道了MAC地址,是不是意味着直接可以通过MAC地址进行通信啊?

    个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。 而有门牌号码属性的IP地址,才是有远程定位功能的。

    比如:你要去某某大学某某学院找小明,你在路上问,有些人不知道某某学院,但是可以给你说某某学校在哪里,但是你直接根据 小明的身份证号 问别人知不知道他在哪个学院,那么肯定没人知道;

    MAC地址更像是身份证,是一个唯一的标识。它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识

    MAC地址是有一定的定位功能的,你可以根据ip地址找到某某学校某某学院某号楼某个实验室,当你到了以后,大吼一声,小明 是哪位,那么他听到了 就会回应你;

    MAC地址的通信范围比较小,局限在一个子网里面。例如,从192.168.0.2/24访问192.168.0.3/24是可以用MAC地址的。一旦跨子网,即从192.168.0.2/24到192.168.1.2/24,MAC地址就不行了,需要IP地址起作用了

    总结:

    • ip是地址,有定位功能;MAC是身份证,无定位功能;
    • CIDR可以用来判断是不是本地人;
    • IP分为公有地址IP和私有地址IP

    四、DHCP和PXE:ip的由来

    只要是在网络上跑的包可以有下层没上层,但是不可以有上层没下层;当一个数据包有自己的ip地址,有目的地的ip地址,但是包发不出去的原因是因为,MAC层还没有填写。

    Linux的默认逻辑是,如果是一个跨网段的调用,它便不会将包直接发送到网络上,而是企图将包发送到网关。网关要和当前的网络至少一个网卡是同一个网段;

    4.1 动态主机配置协议(DHCP)

    动态主机配置协议(Dynamic Host Configuration Protocol),简称DHCP

    有了这个协议,网络管理员就轻松多了。他只需要配置一段共享的IP地址。每一台新接入的机器都通过DHCP协议,来这个共享的IP地址里申请,然后自动配置好就可以了。等人走了,或者用完了,还回去,这样其他的机器也能用。

    如果是数据中心里面的服务器,IP一旦配置好,基本不会变,这就相当于买房自己装修。DHCP的方式就相当于租房。你不用装修,都是帮你配置好的。你暂时用一下,用完退租就可以了。

    4.2 解析DHCP的工作方式

    当一台机器加入一个新的网络的时候,只知道自己的mac地址,先吼一句,有人吗?这一步就是DHCP Discover

    新来的机器使用IP地址0.0.0.0发送了一个广播包,目的IP地址为255.255.255.255。广播包封装了UDP,UDP封装了BOOTP。其实DHCP是BOOTP的增强版,但是如果你去抓包的话,很可能看到的名称还是BOOTP协议;

    在这个广播包里,新人喊一句:我是新来的(Boot request),我的MAC地址是多少,但是我还没有ip地址,谁能给我一个?
    在这里插入图片描述
    网络管理员在网络配置了DHCP server,就相当于IP管理员,MAC地址是其唯一的身份。只有MAC地址唯一,IP管理员才能知道这是一个新人,需要租给它一个新的IP地址,这个过程就是DHCP Offer.

    DHCP Offer格式如下:
    里面会有给新人分配的地址;
    DHCP Offer
    DHCP Server仍然使用广播地址作为目的地址。如果同时收到多个IP地址,那么会选择最先到达的DHCP Offer,并且会向网络发送一个DHCP Request广播数据包,其中包含客户端的MAC地址、接受的租约中的IP地址,提供租约的DHCP服务器地址等,并且告诉所有的DHCP Offer,它将接受哪一台服务器所提供的IP地址,感谢其他DHCP服务器,并且请求撤销他们提供的ip地址,以便提供给下一个租用者。

    在这里插入图片描述
    由于还没有收到DHCP server的最后确认,客户端依然使用自己的源ip地址0.0.0.0、255.255.255.255为目标地址进行广播。在BOOTP里面,接受某个DHCP Server的分配 ip;

    当DHCP Server接收到客户机的DHCP request之后,会广播返回给客户机的一个DHCP ACK消息包,表明已经接受客户机的选择,并且将这一IP地址合法租用信息和其他的配置信息都放到该广播包中,发送给客户机,欢迎它加入网络大家庭;

    在这里插入图片描述
    租约达成以后,还是要广播一下,让大家都知道呢

    ip地址的收回和续租

    如果需要续租的话,需要提前租期的50%,客户机会在租期过去50%的时候,直接向为其提供ip地址的DHCP Server发送DHCP Request消息包,客户机收到该服务器的DHCP ACK消息包之后,会根据包中提供的新的租期,以及其他的已经更新的TCP/IP参数更新自己的配置,这样,ip的租用更新就已经完成了。

    网络管理员不仅能自动分配IP地址,还能帮你自动安装操作系统;

    4.3 预启动执行环境(PXE)

    普通的笔记本一般不会有这种雪球,已经预装好了操作系统。但是数据中心的管理员,可能一下子拿到了几百台空的机器,一台一台装就累死了。

    管理员们不仅希望可以分配好ip地址,还可以自动安装系统,装好系统之后会自动分配IP地址,直接启动最好了。

    安装操作系统的过程,只能插在BIOS启动之后了。因为没安装系统之前,连启动扇区都没有。因而这个过程叫做预启动执行环境(Pre-boot Execution Environment),简称PXE。

    默认的DHCP Server是需要配置的,无非是我们配置IP的时候所需要的IP地址段、子网掩码、网关地址、租期等。如果想使用PXE,则需要配置next-server,指向PXE服务器的地址,另外要配置初始启动文件filename。

    这样PXE客户端启动之后,发送DHCP请求之后,除了能得到一个IP地址,还可以知道PXE服务器在哪里,也可以知道如何从PXE服务器上下载某个文件,去初始化操作系统。

    解析PXE的工作过程

    首先是启动PXE客户端第一步是通过DHCP协议告诉DHCP Server,我啥都没有,DHCP Server便租给它一个ip地址,同时给他PXE服务器的地址、启动文件pexlinux.0;

    其次,PXE客户端知道要去PXE服务器下载这个文件后,就可以初始化机器。于是便开始下载,下载的时候使用的是TFTP协议。所以PXE服务器上,往往还需要有一个TFTP服务器。PXE客户端向TFTP服务器请求下载这个文件,TFTP服务器说好啊,于是就将这个文件传给它;

    然后,PXE客户端收到这个文件后,就开始执行这个文件。这个文件会指示PXE客户端,向TFTP服务器请求计算机的配置信息pxelinux.cfg。TFTP服务器会给PXE客户端一个配置文件,里面会说内核在哪里、initramfs在哪里。PXE客户端会请求这些文件;

    最后,启动Linux内核,一旦启动了操作系统,啥都好办。

    在这里插入图片描述

    总结


    本文是对通信协议综述的总结,共分为四节去介绍:

    1. 为什么学习网络协议?
      通过一个简简单单的下单过程,中间牵扯到这么多的协议,展开介绍;

    2. 网络协议分层的真正含义
      始终想象自己是一个处理网络包的程序:如何拿到网络包,如何根据规则进行处理,如何发出去;
      始终牢记一个原则:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层;

    3. ifconfig命令行的背后;
      IP是地址,有定位功能;MAC是身份证,无定位功能;
      CIDR可以用来判断是不是本地人;
      IP分公有的IP和私有的IP。后面的章节中我会谈到“出国门”,就与这个有关。

    4. DHCP和PXE:ip的由来;
      DHCP协议主要是用来给客户租用IP地址,和房产中介很像,要商谈、签约、续租,广播还不能“抢单”;
      DHCP协议能给客户推荐“装修队”PXE,能够安装操作系统,这个在云计算领域大有用处;

    展开全文
  • 计算机网络协议层次

    千次阅读 2018-08-18 10:44:55
    计算机网络协议同我们的语言一样,多种多样。 为了给网络协议的设计提供一个结构,网络设计者以分层的方式组织协议。 一个协议层能够用软件、硬件或者两者的结合来实现。比如HTTP和SMTP这样的应用层协议几乎总是在...
  • 计算机网络几种常见的协议

    万次阅读 多人点赞 2018-09-24 22:11:21
    一 .典型协议:  传输层: 常见的协议有 TCP/UDP 协议  应用层: 常见的协议有 HTTP,FTP... 网络层: 常见的协议有 IP 协议,ICMP 协议,IGMP 协议  网络接口层: 常见的协议有 ARP 协议,RARP 协议 ...
  • 计算机网络-什么是网络协议

    千次阅读 2019-02-11 19:30:59
    协议计算机网络有序运行的重要保证 硬件(主机、路由器、通信链路等是计算机网络的基础 计算机网络中的数据交换必须遵守事先约定好的规则  计算机网络的所有通 信过程都必须遵守某 种/些规则—协议。 什么是...
  • 计算机网络协议(四)——HTTP、HTTPS、P2P协议

    万次阅读 多人点赞 2019-09-06 09:52:53
    这个专栏的计算机网络协议,我是在极客时间上学习 已经有三万多人购买的刘超老师的趣谈网络协议专栏,讲的特别好,像看小说一样学习到了平时很枯燥的知识点,计算机网络的书籍太枯燥,感兴趣的同学可以去付费购买,...
  • 计算机网络协议集合

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

    千次阅读 2019-03-20 09:50:29
    互联网协议地址 MAC Media Access Control Address 媒体访问控制地址 DNS Domain Name System 域名系统 UDP User Datagram Protocol 用户数据报协议 TCP Transmission Control Protocol...
  • 一、GET 和 POST 的区别 GET请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:/test/demo_form.asp?name1=value1&name2=value2 GET 请求可被缓存 GET 请求保留在浏览器历史记录中 ...
  • 这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(Network Protocol),它是控制两个(或多个)对等实体进行通信的规则的集合,也就是水平的。网络协议也简称为协议。 协议由语法、语义和同步三...
  • 计算机网络协议(三)——UDP、TCP、Socket

    万次阅读 多人点赞 2019-09-04 14:18:45
    这个专栏的计算机网络协议,我是在极客时间上学习 已经有三万多人购买的刘超老师的趣谈网络协议专栏,讲的特别好,像看小说一样学习到了平时很枯燥的知识点,计算机网络的书籍太枯燥,感兴趣的同学可以去付费购买,...
  • 1.协议 协议就是规则的集合 2.接口 接口是统一结点内相邻两层间交换信息的连接点,是一个系统内部的规定。 3.服务 服务是指下层为紧向邻的上层提供的功能调用,也就是垂直的。 ...
  • 协议是控制对等实体
  • 计算机网络谢希仁第七版 课后答案

    万次阅读 多人点赞 2020-09-27 14:10:35
    谢希仁计算机网络第七版课后答案 第一章 概述 1-01 计算机网络向用户可以提供那些服务?答: 连通性和共享 1-02 简述分组交换的要点。答:(1)报文分组,加首部(2)经路由器储存转发(3)在目的地合并 1-03 试从多...
  • 常用的计算机网络协议

    千次阅读 2011-10-07 17:59:57
     通俗地说,网络协议就是网络之间沟通、交流的桥梁,只有相同网络协议计算机才能进行信息的沟通与交流。这就好比人与人之间交流所使用的各种语言一样,只有使用相同语言才能正常、顺利地进行交流。 ...
  • 计算机网络协议(二)——从二层到三层

    千次阅读 多人点赞 2019-09-03 11:56:44
    底层网络知识详解:从二层到三层概述一、从物理层到MAC层1.1 第一层(物理层)1.2 第二层(数据链路层)二、交换机与VLAN2.1 如何解决广播问题和安全问题?三、ICMP和ping3.1 ICMP协议的格式3.2 ICMP报文类型3.3 ping:...
  • 计算机网络协议三要素

    千次阅读 2012-04-13 13:53:29
    语法 语义 时序
1 2 3 4 5 ... 20
收藏数 335,754
精华内容 134,301
关键字:

计算机网络协议