• 计算机基础:计算机网络


    计算机网络


    *1.OSI,TCP/IP,五层协议的体系结构,以及各层协议

    答:

    OSI:开放系统互联(Open System Interconnection)

    OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
    TCP/IP分层(4层):网络接口层、 网络层、传输层、 应用层。
    五层协议 (5层):物理层、数据链路层、网络层、传输层、 应用层。
    每一层的协议如下:
    物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)
    数据链路:PPPARP、FR、HDLC、VLAN、MAC (网桥,交换机
    网络层:IPICMP、RARP、OSPF、IPX、RIP、IGRP、 (路由器
    传输层:TCPUDP、SPX
    会话层:NFS、SQL、NETBIOS、RPC
    表示层:JPEG、MPEG、ASII
    应用层:FTPDNS、Telnet、SMTP、HTTP、WWW、NFS
    每一层的作用如下:
    物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
    数据链路层:将比特组装成帧和点到点的传递(帧Frame
    网络层:负责数据包从源到宿的传递和网际互连(包Packet
    传输层:提供端到端的可靠报文传递和错误恢复(段Segment
    会话层:建立、管理和终止会话(会话协议数据单元SPDU)
    表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
    应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

    (1.ICMP是(Internet Control Message Protocol)Internet控制报文协议。用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

    2.RIP(Routing Information Protocol)路由信息协议

    3.PPP点对点协议(Point to Point Protocol) PPP(点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。

    *2.TCP三次握手和四次挥手的全过程

    三次握手:

    第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

    第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

    握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

    (为什么三次握手:谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ack包。目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。)

    四次握手:

    与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。

    第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。

    第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
    第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
    第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

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

    *3.TCP和UDP的区别?

    (1.特点、举例; 2.协议; 3.TCP可靠性)

    TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。

    TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。

    TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

    TCP对应的协议和UDP对应的协议

    TCP对应的协议:

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

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

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

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

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

    UDP对应的协议:

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

    (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

    (3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

     TCP(传输控制协议):

    1)提供IP环境下的数据可靠传输,主要有:超时重传机制(发送端在RTO时间内未收到接收端的ack确认信息);拥塞控制(慢启动和拥塞避免);字节流顺序(每个字节都有一个序号);面向连接。全双工操作(数据在两个方向上可同时传送),多路复用,端到端的传输。

    2)面向连接:全双工通信方式,通信前双方建立连接(三次握手),再数据传送。通信结束后要断开连接(四次挥手)。

    3)TCP支持的应用协议主要有:Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)。适用于传输数据量大,可靠性要求高的应用,但是效率较低

    UDP(用户数据报协议):

    1)面向非连接的(正式通信前不必与对方建立连接,不管对方状态就直接传送,即时通信比如短信,QQ,在线视屏(花屏一两次也没事)),不提供可靠传输(拥塞控制,差错恢复),用于传送少量数据,可靠性要求低的应用

    2)UDP支持的应用协议:NFS(网络文件系统),SNMP(简单网络管理系统)、DNS(主域名系统)。

    Moreover:TCP可用于网络数据库,分布式高精度计算系统的数据传输;UDP可用于内部局域网(丢包错误率较低)

    参考:TCP拥塞控制

     

    *4.TCP的可靠性如何保证?

    (1.超时重传;2.拥塞控制;3.面向连接)

    超时重传机制(发送端在RTO时间内未收到接收端的ack确认信息);拥塞控制(慢启动和拥塞避免);字节流顺序(每个字节都有一个序号);面向连接

    1、应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。 (将数据截断为合理的长度)
    2、当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。(启动时钟,超时重发)

    参考:网络常见面试题TCP传输可靠性

    *5.ARP协议的工作原理

    地址解析协议,即ARP(Address Resolution Protocol)

    0.首先,每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。
    1.当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;
    2.如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址
    3.网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;
    4.如果相同,
      (1)该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,
      (2)然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
    5.源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。
    6,如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
     

    *6.在浏览器中输入网址后执行的全部过程

    1.查找域名对应的IP地址。这一步会依次查找浏览器缓存,系统缓存,路由器缓存,ISPDNS缓存,根域名服务器。
    2.向IP对应的服务器发送请求。
    3.服务器响应请求,发回网页内容。
    4.浏览器解析网页内容。
    由于网页可能有重定向,或者嵌入了图片,AJAX,其它子网页等等,这4个步骤可能反复进行多次才能将最终页面展示给用户。
     
    现在假设如果我们在客户端(客户端)浏览器中输入http://www.baidu.com,而baidu.com为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作:
      1)客户端浏览器通过DNS解析到http://www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
      2)在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
      3)客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
      4)客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。 
     
    1、应用层:DNS解析域名为目的IP,通过IP找到服务器路径,客户端向服务器发起HTTP会话,然后通过运输层TCP协议封装数据包,在TCP协议基础上进行传输
    2、传输层:HTTP会话会被分成报文段,添加源、目的端口;TCP协议进行主要工作
    3、网络层:为数据包选择路由,IP协议进行主要工作
    4、数据链路层:发送IP数据包到达服务器的地址,ARP协议将IP地址转成MAC地址。
     
     

    7.NAT协议、DHCP协议、DNS协议的作用

    NAT协议:网络地址转换(NAT,Network AddressTranslation)属接入广域网(WAN)技术,

    是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

    借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。

    DHCP协议:动态主机设置协议(Dynamic Host ConfigurationProtocol, DHCP)

    是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

    DNS协议:DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

     
     

     

    *1.从地址栏里输入网址,回车直到页面打开。按照TCP/IP协议,从应用层到链路层经过哪些协议?他们的作用? 

    应用层(Application):
    HTTP超文本传输协议,提供www等服务。输入的网址包含http://,一般为默认。
    DNS动态域名系统,提供域名到IP地址的解析
    FTP文件传输协议,提供文件的传送,如上传,下载
    RIP路由信息协议,提供路由信息
    传输层(Transport):
    TCP传输控制协议,提供面向连接的,端到端的,可靠的数据传输
    UDP用户数据报协议,提供面向无连接的,不可靠的,快捷的数据传输
    网际层(Internet):
    IP因特网通信协议,负责选择数据传送的道路。主要有两个功能:寻址,分段。
    ARP地址解析协议,提供IP地址到MAC地址的解析
    ICMP控制报文协议,提供IP主机,路由器之间控制消息(网络通不通)的传递。
    链路层(link):
    PPP点对点协议,提供路由器之间或者主机之间的连接
    
    

    (PS:OSI中ARP是链路层;TCP/IP中ARP是网际层) 

     

    *2.HTTP, HTTPS 和 SSL

      HTTP是超文本传输协议 Hyper Text Transfer Protocol, 它主要负责web server和web浏览器之间的通讯,HTTP协议把web client (浏览器)的请求发送到一个web server, 并把网页内容从web server返回到浏览器。常用请求包括get和post两种,
      HTTPS 是安全超文本传输协议 Secure HTTP, 主要用于在web server和web 浏览器之间进行隐私数据的传输
      SSL – Secure Sockets Layer(安全套接层), SSL协议用于安全数据传输的数据加密

    参考:Http常见面试

     

    *3.四次挥手过程,如果主动关闭方没有等待2MSL,会如何?

      MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

      2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态,当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第3次握手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。在TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。

      A发出ACK,等待ACK到达对方的超时时间MSL,等待FIN的超时重传,也是MSL,所以如果2MSL时间内没有收到FIN,说明对方安全收到ACK。

     

    *4.HTTP响应的结构是怎么样的?

    答:HTTP响应由三个部分组成: 
    状态码(Status Code):描述了响应的状态。可以用来检查是否成功的完成了请求。请求失败的情况下,状态码可用来找出失败的原因。如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。 
    HTTP头部(HTTP Header):它们包含了更多关于响应的信息。比如:头部可以指定认为响应过期的过期日期,或者是指定用来给用户安全的传输实体内容的编码格式。 
    主体(Body):它包含了响应的内容。它可以包含 HTML 代码,图片,等等。主体是由传输在 HTTP 消息中紧跟在头部后面的数据字节组成的。

    HTTP状态码:

    成功2××:成功处理了请求的状态码。

    重定向3××:重定向

    客户端错误4××:表示请求可能出错,妨碍了服务器的处理。

    服务器错误5××:表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

    *5.Get和Post的差别

    1.从HTTP标准来看Get和Post

      get:get用于标识获取资源而用的,他有两种特性
      1.产生的结果是幂等的,就是说同一个url和同样的get参数,呈现给用户都是同样的结果,例如说你在淘宝看到了一篇好东西,分享给你的朋友,他后面一般会添加一个唯一标识该商品的参数,如果你好友打开后看到的不是该商品,这也是不符合原来设计的初衷。
      2.是安全的,这里的安全是针对服务端而言,get不会引起数据的变化,例如说对数据库的增删改。
      
      post:根据HTTP规范,Post是有可能引起数据的变化,例如说论坛说有人要发表文章,一般是通过填写表单,通过POST传递到服务端,服务端处理数据之后,进行文章的更新。

    2.从应用角度来看

      get

      1.get请求参数放在URL后面,格式是URL?key1=value1&key2=value2...,可以在链接看到参数

      2.理论上HTTP并没有对URL长度进行限制,也就是对get参数没有长度限制,但是一般用户打开链接都是通过浏览器,因此会受到浏览器或者操作系统限制长度,比较常见的限制长度是1024字节。

      post

      1.post请求数据会放在HTTP包中,保密性相对安全。

      2.HTTP标准也没有对POST数据进行限制,但是会受到服务端的长度限制,如处理的程序(PHP),服务器引擎(Apache)。

    3.总结

      get适合于查询区分某些特定数据的页面,如商品展示。

      由于post的HTTP标准,因此更适合做数据的改变,而且由于应用角度上的数据传递方式,更适合用于登录注册功能页,因为不会被别人明眼看到数据(其实就算用POST,如果用心搞你,可以通过捉包去获取数据,也不是说安全挺多的)。

    • HTTP请求报文和响应报文

    HTTP请求报文

      一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。

    1.请求头

    请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。

    HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。

    2.请求头部

    请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:

    User-Agent:产生请求的浏览器类型。

    Accept:客户端可识别的内容类型列表。

    Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。

    3.空行

    最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

    4.请求数据

    请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

    HTTP响应报文

    HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文

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

    状态行格式如下:

    HTTP-Version Status-Code Reason-Phrase CRLF

    其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

    • 1xx:指示信息--表示请求已接收,继续处理。
    • 2xx:成功--表示请求已被成功接收、理解、接受。
    • 3xx:重定向--要完成请求必须进行更进一步的操作。
    • 4xx:客户端错误--请求有语法错误或请求无法实现。
    • 5xx:服务器端错误--服务器未能实现合法的请求。

    常见状态代码、状态描述的说明如下。

    • 200 OK:客户端请求成功。
    • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
    • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
    • 403 Forbidden:服务器收到请求,但是拒绝提供服务。
    • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
    • 500 Internal Server Error:服务器发生不可预期的错误。
    • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

    举个例子:HTTP/1.1 200 OK(CRLF)。

    参考:HTTP请求报文和响应报文

    • IP协议

    IP协议规定了数据传输的基本单元和格式。IP可以根据数据包包头中包括的目的地址将数据包传送到目的地址,在此过程中IP负责选择传送的道路,这种选择道路称为路由功能。

    • IP头、TCP头、UDP头

    IP头结构的定义

     (五层:1.版本4+头4+服务类型8,数据包长度16; 2.数据包标识16+标志位3+段偏移13; 3.存活时间8+协议类型8+首部校验和16; 4.源IP32; 5.目的IP32;)

    /*IP头定义,共20个字节*/
    typedef struct _IP_HEADER 
    {
     char m_cVersionAndHeaderLen;       //版本信息(前4位),头长度(后4位)
     char m_cTypeOfService;            // 服务类型8位
     short m_sTotalLenOfPacket;        //数据包长度
     short m_sPacketID;              //数据包标识
     short m_sSliceinfo;               //分片使用
     char m_cTTL;                  //存活时间
     char m_cTypeOfProtocol;          //协议类型
     short m_sCheckSum;             //校验和
     unsigned int m_uiSourIp;          //源ip
     unsigned int m_uiDestIp;          //目的ip
    } __attribute__((packed))IP_HEADER, *PIP_HEADER ;

    TCP头结构定义

    (五层:1.源16+目的16; 2.序列号; 3.确认号;4.TCP头4+保留6+标志位6,窗口16; 5.校验和16位+紧急指针16位)

    /*TCP头定义,共20个字节*/
    typedef struct _TCP_HEADER 
    {
     short m_sSourPort;              // 源端口号16bit
     short m_sDestPort;              // 目的端口号16bit
     unsigned int m_uiSequNum;         // 序列号32bit
     unsigned int m_uiAcknowledgeNum;  // 确认号32bit
     short m_sHeaderLenAndFlag;        // 前4位:TCP头长度;中6位:保留;后6位:标志位
     short m_sWindowSize;            // 窗口大小16bit
     short m_sCheckSum;              // 检验和16bit
     short m_surgentPointer;           // 紧急数据偏移量16bit
    }__attribute__((packed))TCP_HEADER, *PTCP_HEADER;


    /*TCP头中的选项定义

    kind(8bit)+Length(8bit,整个选项的长度,包含前两部分)+内容(如果有的话)

    KIND = 1表示 无操作NOP,无后面的部分

      2表示 maximum segment   后面的LENGTH就是maximum segment选项的长度(以byte为单位,1+1+内容部分长度)

      3表示 windows scale     后面的LENGTH就是 windows scale选项的长度(以byte为单位,1+1+内容部分长度)

      4表示 SACK permitted    LENGTH为2,没有内容部分

      5表示这是一个SACK包     LENGTH为2,没有内容部分

      8表示时间戳,LENGTH为10,含8个字节的时间戳
    */

    typedef struct _TCP_OPTIONS
    {
     char m_ckind;
     char m_cLength;
     char m_cContext[32];
    }__attribute__((packed))TCP_OPTIONS, *PTCP_OPTIONS;

    UDP头结构的定义

     (两层:1.源端口16+目的端口16; 2.数据包长度16+校验和16;)

    /*UDP头定义,共8个字节*/

    typedef struct _UDP_HEADER 
    {
     unsigned short m_usSourPort;       // 源端口号16bit
     unsigned short m_usDestPort;       // 目的端口号16bit
     unsigned short m_usLength;        // 数据包长度16bit
     unsigned short m_usCheckSum;      // 校验和16bit
    }__attribute__((packed))UDP_HEADER, *PUDP_HEADER;

     参考:IP头、TCP头、UDP头

  • 相关阅读:
    (转)UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
    (转)使用 Document!X 为自己的dll生成一个漂亮的说明文档
    我的游戏学习日志42——游戏机制设计(2)
    我的游戏学习日志41——游戏机制设计(1)
    我的游戏学习日志40——游戏概念设计(2)
    我的游戏学习日志39——游戏概念设计(1)
    我的游戏学习日志38——游戏性的评估标准(2)
    我的游戏学习日志37——游戏性的评估标准(1)
    我的游戏学习日志36——游戏结构(小结)
    我的游戏学习日志35——游戏结构(4)
  • 原文地址:https://www.cnblogs.com/buwenyuwu/p/6308803.html
Copyright © 2020-2023  润新知