精华内容
下载资源
问答
  • TCP/IP 协议 千次阅读
    2022-04-01 20:50:01
    TCP/IP 协议簇
    TCP/IP作为Internet的核心协议,被广泛应用于局域网和广域网中,TCP/IP 包含许多重要的基本特性,这些特性主要表现在5个方面:
    1.逻辑编制:每一块网卡 在出厂时厂家分配了一个独一无二的永久性的物理地址,在Internet中,为每台连入因特网的计算机分配一个逻辑地址,这个逻辑地址叫做IP地址。
    2.路由选择:IP数据包的路由选择
    3.域名解析:将域名映射为IP地址    域名具有教稳定的特点,而IP地址则容易发生变化。
    4.错误检测和流量控制:TCP/IP 具有分组交换确保数据信息在网络上可靠传递的特性。 包括检测数据信息的传输错误,确认传递的信息被成功接收,检测网络系统中的信息流量,防止出现网络拥塞。
    5.对应用程序的支持
    一.  TCP/IP分成模型  
       协议是对数据在计算机或设备之间传输时的表示方法进行定义和描述的标准。规定了进行传输,检测错误,传送确认信息等内容,TCP/IP是一个协议簇,它包含了多种协议。

     

    TCP/IP分层模型
    1.应用层: 应用层处在分层模型的最高层,用户调用应用程序来访问 TCPIP 互联网络,
    以享受网络上提供的各种服务。应用程序负责发送和接收数据。每个应用程序可以选择所需要
    的传输服务类型,并把数据按照传输层的要求组织好,再向下层传送,包括独立的报文序列和连续字节流两种类型。
    2.传输层: 传输层的基本任务是提供应用程序之间的通信服务 。传输层既要系统地管理数据信息的流动,还要提供可靠的传输服务,以确保数据准确而 有序地到达目的地。所以传输层协议软件需要进行协商,让接收方回送确认信息及 让发送方重发丢失的分组。在传输层与网际层之间传递的对象是传输层分组。
    3.网际层:又叫做IP层,主要处理机器之间的通信问题,它接收传输层请求,传送某个具有目的地址信息的分组,有三个主要功能:把分组封装到IP数据报中,把数据报直接送到目标机或路由器,再把数据报交给下面的网络接口层中对应的网络接口模块。
    4.网络接口层:又叫做数据链路层,负责接收IP数据报。
    二.网络接口层协议
    TCP/IP 协议不包含具体的物理层和数据链路层,只定义了网络接口层作为物理层与网络层的接口规范。
    三.网际层协议IP
    由于 IP 只提供无连接、不可靠的服务,所以把差错检测和流量控制之类的服务授权给了 其他的各层协议,这正是 TCPMP 能够高效率工作的一个重要保证。这样,可以根据传送数据 的属性来确定所需的传送服务以及客户应该使用的协议。例如,传送大型文件的 FTP 会话就需 要面向连接的、可靠的服务(因为如果稍有损坏,就可能导致整个文件无法使用)。
    IP 的主要功能包括将上层数据(如 TCP、UDP 数据)或同层的其他数据(如 ICMP 数据)
    封装到 IP 数据报中;将 IP 数据报传送到最终目的地;为了使数据能够在链路层上进行传输,
    对数据进行分段;确定数据报到达其他网络中的目的地的路径。
    IP 协议软件的工作流程:当发送数据时,源计算机上的 IP 协议软件必须确定目的地是在
    同一个网络上,还是在另一个网络上。IP 通过执行这两项计算并对结果进行比较,才能确定数
    据到达的目的地。如果两项计算的结果相同,则数据的目的地确定为本地;否则,目的地应为
    远程的其他网络。如果目的地在本地,那么 IP 协议软件就启动直达通信;如果目的地是远程计
    算机,那么 IP 必须通过网关(或路由器)进行通信,在大多数情况下,这个网关应当是默认网
    关。当源 IP 完成了数据报的准备工作时,它就将数据报传递给网络访问层,网络访问层再将数
    据报传送给传输介质,最终完成数据帧发往目的计算机的过程。
    当数据抵达目的计算机时,网络访问层首先接收该数据。网络访问层要检查数据帧有无错
    误,并将数据帧送往正确的物理地址。假如数据帧到达目的地时正确无误,网络访问层便从数
    据帧的其余部分中提取数据有效负载(Payload),然后将它一直传送到帧层次类型域指定的协
    议。在这种情况下,可以说数据有效负载已经传递给了IP。
    四. ARP和RARP
    地址解析协议(Address Resolution Protocol, ARP)及反地址解析协议(RARP)是驻留在
    网际层中的重要协议。ARP 的作用是将 IP 地址转换为物理地址,RARP 的作用是将物理地址转
    换为IP 地址。网络中的任何设备,主机、路由器和交换机等均有唯一的物理地址,该地址通过
    网卡给出,每个网卡出厂后都有不同的编号,这意味着用户所购买的网卡有着唯一的物理地址。
    另一方面,为了屏蔽底层协议及物理地址上的差异,IP 协议又使用了 IP 地址,因此,在数据
    传输过程中,必须对 IP 地址与物理地址进行相互转换。
    五.网际层协议 ICMP
    Internet 控制信息协议(Internet Control Message Protocol,ICMP)是网际层的另一个比较重
    要的协议。由于 IP 是一种尽力传送的通信协议,即传送的数据报可能丢失、重复、延迟或乱序,
    因此 IP 需要一种避免差错并在发生差错时报告的机制。ICMP 就是一个专门用于发送差错报文的
    协议。
    六. 传输层协议 TCP
    TCP(Transmission Control Protocol,传输控制协议),是整个 TCP/IP 协议族中最重要的
    协议之一。它在 IP 提供的不可靠数据服务的基础上,为应用程序提供了一个可靠的、面向连接
    的、全双工的数据传输服务.
    传输层协议 UDP
    用户数据报协议(User Datagram Protocol,UDP)是一种不可靠的、无连接的协议,可以
    保证应用程序进程间的通信。与同样处在传输层的面向连接的 TCP 相比较,UDP 是一种无连
    接的协议,它的错误检测功能要弱得多。可以这样说,TCP 有助于提供可靠性:而 UDP 则有
    助于提高传输的高速率性

     

    七.应用层协议
    随着计算机网络的广泛应用,人们也已经有了许多基本的、相同的应用需求。为了让不同
    平台的计算机能够通过计算机网络获得一些基本的、相同的服务,也就应运而生了一系列应用
    级的标准,实现这些应用标准的专用协议被称为应用级协议
    更多相关内容
  • TCP-IP协议详解

    热门讨论 2008-11-24 20:46:50
    3.2.3 IP协议 23 3.2.4 应用层 25 3.2.5 传输层 25 3.2.6 网络层 25 3.2.7 链路层 25 3.3 远程登录(Telnet) 25 3.4 文件传输协议(FTP) 25 3.5 普通文件传输协议(TFTP) 26 3.6 简单邮件传输协议(SMTP) 26 3.7 网络...
  • TCP-IP协议

    2011-10-31 22:55:28
    TCP-IP协议;TCP-IP协议;TCP-IP协议;TCP-IP协议;TCP-IP协议;TCP-IP协议;TCP-IP协议
  • TCP-IP协议详解1,2卷

    热门讨论 2012-05-28 10:02:25
     《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间...
  • TCP-IP协议详解(2) 以太网与WiFi协议

    千次阅读 2018-09-14 14:07:47
    本文转自:https://blog.csdn.net/jjdiaries/article/details/48096295 在阅读“TCP-IP协议详解”系列文章之前,建议阅读以下两篇文章,以便对互联网协议有个快速的全局了解和把握! 互联网协议入门...

    本文转自:https://blog.csdn.net/jjdiaries/article/details/48096295

    在阅读“TCP-IP协议详解”系列文章之前,建议阅读以下两篇文章,以便对互联网协议有个快速的全局了解和把握!

    互联网协议入门(一)

    互联网协议入门(二)

    “小喇叭开始广播啦”,如果你知道这个,你一定是老一辈的人。“小喇叭”是五十年代到八十年代的儿童广播节目。在节目一开始,都会有一段这样的播音:“小朋友,小喇叭开始广播了!” 听到这里,收音机前的小朋友就兴奋起来,准备好听节目了:这一期的内容是以太网(Ethernet)协议与WiFi。

    我们在网络协议概观中说到,以太网和WiFi是连接层的两种协议。在连接层,信息以帧(frame)为单位传输。帧像信封一样将数据(payload)包裹起来,并注明收信地址和送信地址。连接层实现了“本地社区”的通信。我们先来看看以太网的帧。

    以太网的帧格式

    帧本身是一段有限的0/1序列。它可以分为头部、数据(Payload)和尾部三部分:

    payload-tcp-ip

    帧按照上面的顺序从头到尾依次被发送/接收。我们下面进一步解释各个区域。

    头部

    帧的最初7个byte被称为序言(preamble)。它的每个byte都是0xAA(这里是十六进制,也就是二进制的10101010)。通常,我们都会预定好以一定的频率发送0/1序列(比如每秒10bit)。如果接收设备以其他频率接收(比如每秒5bit),那么就会错漏掉应该接收的0/1信息。但是,由于网卡的不同,发送方和接收方即使预订的频率相同,两者也可能由于物理原因发生偏差。这就好像两个人约好的10点见,结果一个人表快,一个人表慢一样。序言是为了让接收设备调整接收频率,以便与发送设备的频率一致,这个过程就叫做时钟复原(recover the clock)。

    (就像在收听广播之前,调整转钮,直到声音清晰。网卡会在接收序言的过程中不断微调自己的接收频率,直到自己“听到”是…1010…)

    时钟调整好之后,我们等待帧的起始信号(SFD, start frame delimiter)。SFD是固定的值0xAB。这个0xAB就好像“小喇叭开始广播啦”一样,提醒我们好节目就要上演了。

    Preamble和SFD

    紧随SFD之后的是6 byte的目的地(DST, destination)和6 byte的发出地(SRC, source)。这就是我们在邮差和邮局中的介绍一样,为信封写上目的地和发出地。要注意,这里写在信封上的是对地址的“本地描述”,也就是MAC地址。MAC地址是物理设备自带的序号,只能在同一个以太网中被识别 (正如邮差只熟悉自己的社区一样)。

    头部的最后一个区域是Type,用以说明数据部分的类型。(比如0×0800为IPv4,0×0806为ARP)

    数据

    数据一般包含有符合更高层协议的数据,比如IP包。连接层协议本身并不在乎数据是什么,它只负责传输。注意,数据尾部可能填充有一串0(PAD区域)。原因是数据需要超过一定的最小长度。

    尾部

    跟随在数据之后的是校验序列(FCS, Frame Check Sequence)。校验序列是为了检验数据的传输是否发生错误。在物理层,我们通过一些物理信号来表示0/1序列(比如高压/低压,高频率/低频率等),但这些物理信号可能在传输过程中受到影响,以致于发生错误。如何来发现我们的数据是正确的呢?

    一个方法是将数据发送两遍,然后对比一下是否一样。但这样就大大降低了网络的效率。FCS采用了CRC(Cyclic Redundancy Check)算法。这就好像是一家饭店的老板雇佣了一个收银员,但他又担心收银员黑钱。可是每天营业额很大,老板即使坐在旁边看,也不能用记住收到的总数。所以他采取了一个聪明的办法:只记住收到钱的最后一位 (比如收到19元,老板记住9)。当有新的进账(比如13,尾数为3),他就将新的尾数和旧的尾数相加,再记住和的尾数(也就是2)。当收银员交给老板钱的时候,老板只用看总额的最后一位是否和自己记的最后一位相同,就可以知道收银员是否诚实了。如果说我们的数据是收银的总额的话,我们的FCS就是老板记录的尾数。如果两者不相符,我们就知道数据在传输的过程中出现错误,不能使用。

    有FCS在盯着

    上面的比喻实际上是用营业总额不断的除以10,获得最终的尾数。CRC算法也相类似。n位CRC算法取一个n bit的因子,比如下面的1011。数据序列结尾增加n-1个0。因子与数据序列的不断进行XOR运算,直到得到n-1位的余数,也就是100。该余数各位取反(011),然后存储在FCS的位置。

    11010011101100 000 <— 数据序列末尾增加3位0
    1011               <— 因子
    01100011101100 000 <— XOR结果
     1011              <— 因子
    00111011101100 000
      1011
    00010111101100 000
       1011
    00000001101100 000
           1011
    00000000110100 000
            1011
    00000000011000 000
             1011
    00000000001110 000
              1011
    00000000000101 000 
    
    
    
    
    

    101 1

    00000000000000 100 <— 3位余数

    上面例子用的是4位CRC。在Ethernet中使用的因子为32位的,以达到更好的检测效果。

    集线器(Hub) vs. 交换器(Switch)

    以太网使用集线器或者交换器将帧从发出地传送到目的地。一台集线器或交换器上有多个端口,每个端口都可以连接一台计算机(或其他设备)。

    集线器像一个广播电台。一台电脑将帧发送到集线器,集线器会将帧转发到所有其他的端口。每台计算机检查自己的MAC地址是不是符合DST。如果不是,则保持沉默。集线器是比较早期的以太网设备。它有明显的缺陷:

    1) 任意两台电脑的通信在同一个以太网上是公开的。所有连接在同一个集线器上的设备都能收听到别人在传输什么,这样很不安全。可以通过对信息加密提高安全性。

    2) 不允许多路同时通信。如果两台电脑同时向集线器发信,集线器会向所有设备发出“冲突”信息,提醒发生冲突。可以在设备上增加冲突检测算法(collision detection):一旦设备发现有冲突,则随机等待一段时间再重新发送。

    交换器克服集线器的缺陷。交换器记录有各个设备的MAC地址。当帧发送到交换器时,交换器会检查DST,然后将帧只发送到对应端口。交换器允许多路同时通信。由于交换器的优越性,交换器基本上取代了集线器。但比较老的以太网还有可能在使用集线器。

    WiFi

    WiFi的工作方式与集线器连接下的以太网类似。一个WiFi设备会向所有的WiFi设备发送帧,其它的WiFi设备检查自己是否符合DST。由于WiFi采取无线电信号,所以很难像交换器一样定向发送,所以WiFi的安全性很值得关注。WiFi采用加密的方法来实现信息的安全性。

    (早期的WEP加密方法非常脆弱,建议使用WPA或者WPA2加密方法。隐藏WiFi设备ID的方法不是很有用。)


    总结

    我们深入了连接层协议的一些细节。连接层是物理与逻辑的接口,它的设计兼顾了物理需求(比如时钟复原,CRC)和逻辑需求(比如地址、数据)。由于连接层处于网络逻辑的底层,有许多基于连接层的攻击手法,这需要我们对连接层的工作方式有一定的了解,以设计出更好的网络安全策略。

    【TCP/IP详解】系列教程



    文/ Vamei TODO…

            </div>
                </div>
    
    展开全文
  • TCP-IP协议详解.ppt

    热门讨论 2011-04-20 22:45:50
    TCP-IP协议详解TCP-IP协议详解TCP-IP协议详解TCP-IP协议详解TCP-IP协议详解TCP-IP协议详解TCP-IP协议详解TCP-IP协议详解
  • TCP-IP详解卷1 协议 高清 pdfTCP-IP详解卷1 协议 高清 pdfTCP-IP详解卷1 协议 高清 pdfTCP-IP详解卷1 协议 高清 pdfTCP-IP详解卷1 协议 高清 pdfTCP-IP详解卷1 协议 高清 pdf
  • TCP-IP详解卷一:协议》pdf版,学习计算机网络的优先书籍。
  • TCP/IP详解:TCP-IP详解卷一:协议TCP-IP详解卷二:实现、TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议
  • TCP-IP详解(协议、实现、TCP事务协议TCP-IP详解卷1:协议 TCP-IP详解卷2:实现 TCP-IP详解卷3:TCP事务协议
  • TCP-IP协议详解.pdf

    热门讨论 2009-05-23 10:30:50
    TCP-IP协议详解.pdf TCP-IP协议详解.pdf TCP-IP协议详解.pdf TCP-IP协议详解.pdf
  • TCP-IP详解卷一:协议/TCP-IP详解卷一:协议/TCP-IP详解卷一:协议/TCP-IP详解卷一:协议TCP-IP详解卷一:协议/TCP-IP详解卷一:协议/TCP-IP详解卷一:协议/TCP-IP详解卷一:协议/TCP-IP详解卷一:协议TCP-IP详解...
  • TCP-IP Illustrated(1、2、3卷)中文版

    热门讨论 2013-10-29 00:04:07
    完整而详细的TCP/IP协议讲解. Stevens写的巨著. 共分三卷: TCP-IP详解卷1:协议.pdf TCP-IP详解卷2:实现.pdf TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议.pdf
  • tcp/ip协议详解

    万次阅读 2021-06-03 15:50:50
    tcp/ip 四层模型,从上到下依次是应用层,传输层,网络层,网络接口层(数据链路层) http协议请求格式: 1. 请求行: 请求行包括请求方法、URL、协议版本,它们之间用空格分隔(所以我们输入的 URL ...

    tcp/ip 四层模型,从上到下依次是应用层,传输层,网络层,网络接口层(数据链路层)

    http协议请求格式:

    1. 请求行:

    请求行包括请求方法、URL、协议版本,它们之间用空格分隔(所以我们输入的 URL 是不允许带有空格),且都不定长度。

    请求方法:常用的 POST (将表单数据存入请求体里面,多数用于上传数据),GET(将请求参数都放置在 URL+? 后,参数之间用 & 连接,用于获取数据),HEAD (服务端只返回响应头,所以处理响应速度快,用于检测请求是否可用)。

    2. 请求头

    每一行以键值对的形式写入,键值间用 :分割,多个值之间以 ;分割,每行以回车符换行符结束。常见的键有:User-Agent:产生请求的浏览器类型;Accept:客户端可识别的内容类型列表;Host:请求的主机名,允许多个域名同处一个 IP 地址;Range:指定请求实体的一个或者多个子范围,采用多线程下载时可以设置该键。要注意请求头与请求体间有一个空行,它表示通知服务端没有更多请求头了,下面的都是请求体。

    3. 请求体

    请求数据不在 GET 方法中使用,而是在 POST 方法中使用,POST 方法适用于需要客户填写表单的场合。

    http协议响应格式:

    1. 状态行:

    状态行包括协议版本,状态码,状态码描述,常见的一个状态行的例子是(HTTP/1.1 200 OK),其中 200 表示请求正常状态码中的第一个数字定义了相应的类别,第一个数字可以取如下所示的 5 个不同的值之一,含义如下。

    1XX:信息响应类,表示接收到请求并且继续处理。

    2XX:请求处理成功的响应类,表示请求被成功接收和处理,如 HTTP 200 (表示一切正常)。

    3XX:重定向响应类,为了完成指定的请求动作,必须接受进一步的请求处理。

    4XX:客户端错误,客户请求包含语法错误或者不能正确执行,如 HTTP 400 (表示请求无效)。

    5XX:服务端错误,服务器不能正常执行一个正确的 HTTP 请求,如 HTTP 500 (服务器内部出现错误)。

    2. 响应头:

    与请求头类似,通过键值对的形式向客户端传递关键消息,常见的有:Content-Type:用于向接收方指示实体的介质类型;Content-Range:用于向接收方指示实体的传送范围;Content-Length:用于向接收方指示实体的传送长度;Date:传送系统的日期与时间。

    3. 响应体:

    服务端真正返回的文本数据,如果客户端请求一个网页的话,该数据段将填充请求的 html 文本。

    tcp数据帧格式:

    TCP(Transmission Control Protocol) 即传输控制协议,是一种面向连接的(需通过三次握手来建立 TCP 连接,在主机间建立会话)、可靠的(TCP 通过确认和按顺序传递来确保数据的传递)、基于字节流的传输层通信协议,但 TCP 传输比较慢,开销略高,并且只支持点对点通信。当应用层向 TCP 层发送用于网间传输的 8 字节表示的数据流,TCP 则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制,之后 TCP 把数据包传给 IP 层,由它来通过网络将包传送给接收端实体的 TCP 层。

    /*TCP 头定义,共 20 个字节*/
    typedef struct_TCP_HEADER
    {
        short m_sSourPort;                  //源端口号 16 bit
        short m_sDestPort;                  //目的端口号 16 bit
        unsigned int m_uiSeqNum;            //序列号 32 bit
        unsigned int m_uiAcknowledgeNum;    //确认号 32 bit
        short m_sHeaderLenAndFlag;          //前4位:TCP 头长度;中6位:保留;后6位:标志位
        short m_sWindowSize;                //窗口大小 16 bit
        short m_sCheckSum;                  //校验和 16 bit
        short m_surgentPointer;             //紧急数据偏移量 16 bit
    }__attribute__((packed))TCP_HEADER,*PTCP_HEADER;
     源端口:2 个字节,是一个大于 1023 的 16 位数字,由基于 TCP 应用程序的用户进程随机选择。

    目的端口:2 个字节,指明接收者所用的端口号,一般由应用程序来指定。

    顺序号:4 个字节,用来标识从 TCP 源端向 TCP 目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。如果将字节流看作在两个应用程序间的单向流动,则 TCP 用顺序号对每个字节进行计数,序号是 32 bit 的无符号数,序号达到 2^32-1 后又从 0 开始。比如我们收到一个数据报中 sq(顺序号) =0,数据报内容为 20 字节,那么下一个数据报的 sq 就应该是 21。当建立一个新的连接时,SYN 标志变为 1,顺序号字段包含由这个主机选择的该连接的初始顺序号 ISN。

    确认序号:4 个字节,包含发送确认的一端所期待收到的下一个顺序号。因此,确认序号应该是上次已经成功收到数据字节顺序号加 1 。比如我们收到的一个数据报的 sq = 0 ,数据报内容为 20 字节,那么我们的 ack(确认序号) 应该是 21 ,用来表明 sq=0 ,内容为 20 字节的数据报已经收到,接下来期望收到的是 sq=21 的数据报。只有 ACK 标志为 1 时确认序号字段才有效。

    报文长度:4 位,给出报头中 32 bit 字的数目,需要这个值是因为任选字段的长度是可变的,这个字段占 4 bit,即 TCP 最多有 60 (15*4) 字节的首部。

    保留区:6 位,保留给将来使用,目前必须置为 0 。

    控制位:6位,控制位包括

    URG:为 1 表示紧急指针有效,为 0 则忽略紧急指针值。

    ACK:为 1 表示确认号有效,为 0 表示报文中不包含确认信息,忽略确认号字段。

    PSH:为 1 表示是带有 PUSH 标志的数据,表示发送端缓存中已经没有待发送的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。

    RST:用于复位由于主机崩溃或其他原因而出现错误的连接。它还可以用于拒绝非法的报文段和拒绝连接请求。一般情况下,如果收到一个 RST 为 1 的报文,那么一定发生了某些问题。

    SYN:同步序号,为 1 表示连接请求,用于建立连接和使顺序号同步。

    FIN:用于释放连接,为 1 表示发送方已经没有数据发送了,即关闭本方数据流。

    窗口大小:2 个字节,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口的大小。窗口大小是一个 16 bit 字段,因而窗口大小最大为  2^16-1 。

    校验和:2 个字节,对整个的 TCP 报文段(包括 TCP 头部和 TCP 数据以及伪报文头)进行校验和计算。这是一个强制性的字段,要求由发送方计算和存储,并由接收端进行验证(接收端要与发送端数值结果完全一样,才能证明数据是有效的)。

    紧急指针:2 个字节,是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式,只有当 URG 标志置为 1 时紧急指针才有效。

    选项:n*4 字节,常见的可选字段是最长报文大小 MSS(Maximum Segment Size)。每个连接方通常都在通信的第一个报文段 (为建立连接而设置 SYN 标志的那个段) 中指明这个选项,它指明本端所能接收的最大长度的报文段。选项长度不一定是 32 位字的整数倍,所以需要添加填充位,使得报文长度为 32 位字的整数倍。

    数据:不定长度,为上层协议封装好的数据。

    TCP滑动窗口

    发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。

    接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。

    TCP流量控制与拥塞控制

    TCP的流量控制是利用滑动窗口机制实现的,主要控制发送方的发送速率,保证接收方来得及接收。接收方在返回的数据中会包含自己的接收窗口的大小,以控制发送方的数据发送。拥塞控制:拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。

    接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

    实际上,为了避免此问题的产生,发送端主机会时不时的发送一个叫做窗口探测的数据段,此数据段仅包含一个字节来获取最新的窗口大小信息。

    两者的区别:流量控制是为了预防拥塞。如:在马路上行车,交警跟红绿灯是流量控制,当发生拥塞时,如何进行疏散,是拥塞控制。流量控制指点对点通信量的控制。而拥塞控制是全局性的,涉及到所有的主机和降低网络性能的因素。

    拥塞解决的两种方法:

    发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。

    发送方需要维护一个叫做拥塞窗口(cwnd)的状态变量,注意拥塞窗口与发送方窗口的区别:拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。

    慢开始+拥塞避免

    快重传+快恢复

    udp数据帧格式:

    UDP(User Datagram Protocol) 即用户数据报协议,在网络中它与 TCP 协议一样用于处理数据包,是一种不可靠(服务不用确认、不对报文排序、不进行流量控制,可能会出现丢失、重复、失序现象)、无连接(在主机间不建立会话)的协议,在 OSI 模型中的第四层--传输层,处于 IP 协议的上一层。由于 UDP 传输不是可靠性服务,所以帧结构较为简单,而且处理与发送速率高,开销要求低,支持点对点和一点对多点的通信,经常用作音频、视频和普通数据的传输协议,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

    /*UDP 头定义,共 8 个字节*/
    typedef struct_UDP_HEADER
    {
        unsigned short m_usSourPort;     //源端口号 16 bit
        unsigned short m_usDestPort;     //目的端口号 16 bit
        unsigned short m_usLength;      //数据包长度 16 bit
        unsigned short m_usCheckSum;    //校验和 16 bit
    }__attribute__((packed))UDP_HEADER,*PUDP_HEADER;
    源端口:16 bit (2 个字节),是一个大于 1023 的 16 位数字,由基于 UDP 应用程序的用户进程随机选择。

    目的端口:16 bit (2 个字节),指明接收者所用的端口号,一般由应用程序来指定。

    数据长度:16 bit (2 个字节),标明 UDP 头部和 UDP 数据的总字节长度。

    校验和字段:16 bit (2 个字节),用来对 UDP 头部和 UDP 数据进行校验。与 TCP 不同的是,此字段是可选项,而 TCP 数据段中必须包含校验和字段。

    数据:不定长度,为上层协议封装好的数据。
     

    IP数据帧格式:

    IP 协议是 TCP/IP 协议族中最为核心的协议,它提供不可靠的、无连接的服务,也即依赖其他层的协议进行差错控制。在局域网中,IP 协议往往被封装在以太网帧中传送,而所有的 TCP、UDP、ICMP、IGMP 数据都被封装在 IP 数据报中传送。

    /*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;
    版本:4 位,用来表明 IP 协议实现的版本号,当前一般为 IPv4,即 0100,IPv6 的为 0110,这个字段确保可能运行不同 IP 版本的设备之间的兼容性。

    首部长度:即报头长度,4 位,以 32 bit 的字来定义 IP 首部的长度,包括可选项。若该字段的最小值是 5 (标准头部长度),即 5*32=160 比特 =20 字节,此字段最大值为15 (有扩展部分),即15*32 =480 比特 = 60 字节。

    服务类型:8位,用于携带提供服务质量特征信息的字段,服务类型字段声明了数据报被网络系统传输时可以被怎样处理。其中前 3 比特位优先权子字段(Precedence,现已被忽略,各种终端都不采用)。第 8 比特保留未用。第 4 至第 7 比特分别代表延迟、吞吐量、可靠性和花费,当它们取值为 1 时分别代表要求最小时延、最大吞吐量、最高可靠性和最小花费,这 4 比特的服务类型中只能置其中 1 比特为 1,可以全为 0 ,若全为 0 则表示一般服务,大多数情况下该服务类型会被忽略。

    总长度:16 位,指明整个数据报的长度,按字节计算,最大长度为 2^16 字节。

    标识:16 位,用来唯一标识主机发送的每一份数据报,IP 软件会在存储器中维持一个计数器,每产生一个数据段,计数器就加 1,并将此值赋给标志字段。但这个“标识”并不是序号,因为 IP 是无连接服务,数据报不存在按序接收问题,如数据报由于超过网络的 MTU (最大传送单元) 而必须分片时,这个标志字段的值就会被复制到所有的数据报的标识字段中,相同的标识字段的值使分片后各数据报片能正确的重装成为原来的数据报。

    标志:3 位,分别是 RF、DF、 MF,目前只有 DF,MF 有效,DF(don't fragment),置为 0 时表示可以分段,置为 1 时是不能被分段,MF(more fragment),置为 0 时表示该数据段为最后一个数据段,置为 1 时表示后面还有被分割分段。

    段偏移量:13 位,指出较长的分组在分段后,某段在原分组的相对位置。也就是说相对用户字段的起点,该片从何处开始。段偏移以 8 个字节(有 3 位被 flags 占据)为偏移单位,这就是每个分片的长度一定是 8 字节 (64位) 的整数倍。

    生存期:8 位,用来设置数据报最多可以经过的路由器数,由发送数据的源主机设置,通常为 32、64、128等,每经过一个路由器,其值减 1 ,直到 0 该数据报被丢弃。

    协议:8 位,指明 ip 数据字段中的数据采用上层什么协议封装的,常见的有 ICMP(1)、IGMP(2)、TCP(6)、UDP(17)

    首部校验和:16位,填充根据 ip 头部计算得到的校验和码。计算方法是:对头部中每个 16 比特进行二进制反码求和,但不含涉及头部后的数据字段。

    源 IP 地址:源 ip 地址,32 位。

    目的 IP 地址:目标 ip 地址,32 位。

    选项:n*32 位,用来定义一些可选项:如记录路径、时间戳等,但这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选字段的长度必须是 32 比特的整数倍,如果不足,必须填充 0 以达到此长度要求,根据 IHL(首部长度) 可以得到选项的长度。

    数据:不定长度,但受限于数据报的最大长度 2^16 ,这是在数据报中要传输的数据,它是一个完整的较高层报文或报文的一个分片。

    以太网帧格式:

    在数据链路层中,使用最多的就是以太网,而以太网帧因为历史原因存在多个版本,这里采用 IEEE 802.3 以太帧格式。

    前导码:7 个字节,用于数据传输过程中的双方发送与接收的速率的同步。

    SFD:帧开始符,1 个字节,用于标识一个以太网帧的开始。 

    目的 MAC 地址:6 个字节,指明帧的接收者。

    源 MAC 地址:6 个字节,指明帧的发送者。

    长度:2 个字节,指明该帧数据字段的长度,但不代表数据字段长度能够达到 2^16 字节。

    类型:2 个字节,指明帧中数据的协议类型,比如常见的 IPv4 中的 ip 协议采用 0x0800。

    数据与填充:46~1500 个字节,包含了上层协议传递下来的数据,如果加入数据字段后帧长度不够 64 字节,会在数据字段加入填充字段达到 64 字节。

    校验和:4 个字节,对接收网卡(主要是检测数据与填充字段)提供判断是否传输错误的一种方法,如果发现错误,则丢弃此帧。目前最为流行的用于校验和(FCS)的算法是循环冗余校验(cyclic redundancy check -- CRC)。
     

    CRC计算例子:

    现假设选择的CRC生成多项式为G(x)=x^4+x^3+1,要求出二进制序列10110011的CRC校验码。下面是具体的计算过程:

    ①将多项式转化为二进制序列,由G(x)=x^4+x^3+1可知二进制一种有五位,第4位、第三位和第零位分别为1,则序列为11001

    ②多项式的位数位5,则在数据帧的后面加上5-1位0,数据帧变为101100110000,然后使用模2除法除以除数11001,得到余数。

    ③将计算出来的CRC校验码添加在原始帧的后面,真正的数据帧为101100110100,再把这个数据帧发送到接收端。

    ④接收端收到数据帧后,模2除11001,验证余数是否为0,如果为0,则说明数据帧没有出错。

    展开全文
  • TCP-IP详解卷1:协议

    2018-02-20 20:20:23
    TCP-IP详解卷1:协议TCP-IP详解卷1:协议TCP-IP详解卷1:协议TCP-IP详解卷1:协议TCP-IP详解卷1:协议TCP-IP详解卷1:协议TCP-IP详解卷1:协议TCP-IP详解卷1:协议
  • 图解TCP-IP协议

    千次阅读 2014-09-19 09:33:04
    本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。 图1 TCP 三次握手四次挥手 图1主要包括三部分...

    本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。

    图1 TCP 三次握手四次挥手

    图1主要包括三部分:建立连接、传输数据、断开连接。

    1)建立TCP连接很简单,通过三次握手便可建立连接。

    2)建立好连接后,开始传输数据。TCP数据传输牵涉到的概念很多:超时重传、快速重传、流量控制、拥塞控制等等。

    3)断开连接的过程也很简单,通过四次握手完成断开连接的过程。

    三次握手建立连接:

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

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

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

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

    传输数据过程:

    a.超时重传

    超时重传机制用来保证TCP传输的可靠性。每次发送数据包时,发送的数据报都有seq号,接收端收到数据后,会回复ack进行确认,表示某一seq号数据已经收到。发送方在发送了某个seq包后,等待一段时间,如果没有收到对应的ack回复,就会认为报文丢失,会重传这个数据包。

    b.快速重传

    接受数据一方发现有数据包丢掉了。就会发送ack报文告诉发送端重传丢失的报文。如果发送端连续收到标号相同的ack包,则会触发客户端的快速重传。比较超时重传和快速重传,可以发现超时重传是发送端在傻等超时,然后触发重传;而快速重传则是接收端主动告诉发送端数据没收到,然后触发发送端重传。

    c.流量控制

    这里主要说TCP滑动窗流量控制。TCP头里有一个字段叫Window,又叫Advertised-Window,这个字段是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。 滑动窗可以是提高TCP传输效率的一种机制。

    d.拥塞控制

    滑动窗用来做流量控制。流量控制只关注发送端和接受端自身的状况,而没有考虑整个网络的通信情况。拥塞控制,则是基于整个网络来考虑的。考虑一下这样的场景:某一时刻网络上的延时突然增加,那么,TCP对这个事做出的应对只有重传数据,但是,重传会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,于是,这个情况就会进入恶性循环被不断地放大。试想一下,如果一个网络内有成千上万的TCP连接都这么行事,那么马上就会形成“网络风暴”,TCP这个协议就会拖垮整个网络。为此,TCP引入了拥塞控制策略。拥塞策略算法主要包括:慢启动,拥塞避免,拥塞发生,快速恢复。

    四次握手断开连接:

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

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

     

    图2给出了TCP通信过程中的状态转移图,理解此图是我们理解TCP-IP协议的关键。

    图2  TCP状态转移图

    状态图详细解读:

    1.CLOSED:起始点,在超时或者连接关闭时候进入此状态。

    2.LISTEN:服务端在等待连接过来时候的状态,服务端为此要调用socket,bind,listen函数,就能进入此状态。此称为应用程序被动打开(等待客户端来连接)。

    3.SYN_SENT:客户端发起连接,发送SYN给服务器端。如果服务器端不能连接,则直接进入CLOSED状态。

    4.SYN_RCVD:跟3对应,服务器端接受客户端的SYN请求,服务器端由LISTEN状态进入SYN_RCVD状态。同时服务器端要回应一个ACK,同时发送一个SYN给客户端;另外一种情况,客户端在发起SYN的同时接收到服务器端得SYN请求,客户端就会由SYN_SENT到SYN_RCVD状态。

    5.ESTABLISHED:服务器端和客户端在完成3次握手进入状态,说明已经可以开始传输数据了。

    以上是建立连接时服务器端和客户端产生的状态转移说明。相对来说比较简单明了,如果你对三次握手比较熟悉,建立连接时的状态转移还是很容易理解。

    下面,我们来看看连接关闭时候的状态转移说明,关闭需要进行4次双方的交互,还包括要处理一些善后工作(TIME_WAIT状态),注意,这里主动关闭的一方或被动关闭的一方不是指特指服务器端或者客户端,是相对于谁先发起关闭请求来说的:

    6.FIN_WAIT_1:主动关闭的一方,由状态5进入此状态。具体的动作是发送FIN给对方。

    7.FIN_WAIT_2:主动关闭的一方,接收到对方的FIN-ACK(即fin包的回应包),进入此状态。

    8.CLOSE_WAIT:接收到FIN以后,被动关闭的一方进入此状态。具体动作是接收到FIN,同时发送ACK。(之所以叫close_wait可以理解为被动关闭方此时正在等待上层应用发出关闭连接指令)

    9.LAST_ACK:被动关闭的一方,发起关闭请求,由状态8进入此状态。具体动作是发送FIN给对方,同时在接收到ACK时进入CLOSED状态。

    10.CLOSING:两边同时发起关闭请求时,会由FIN_WAIT_1进入此状态。具体动作是接收到FIN请求,同时响应一个ACK。

    11.TIME_WAIT:最纠结的状态来了。从状态图上可以看出,有3个状态可以转化成它,我们一一来分析:

          a.由FIN_WAIT_2进入此状态:在双方不同时发起FIN的情况下,主动关闭的一方在完成自身发起的关闭请求后,接收到被动关闭一方的FIN后进入的状态。

          b.由CLOSING状态进入:双方同时发起关闭,都做了发起FIN的请求,同时接收到了FIN并做了ACK的情况下,由CLOSING状态进入。

          c.由FIN_WAIT_1状态进入:同时接受到FIN(对方发起),ACK(本身发起的FIN回应),与b的区别在于本身发起的FIN回应的ACK先于对方的FIN请求到达,而b是FIN先到达。这种情况概率最小。

    关闭的4次连接最难理解的状态是TIME_WAIT,存在TIME_WAIT的2个理由:

    1.可靠地实现TCP全双工连接的终止。

    2.允许老的重复分节在网络中消逝。

    附:

    慢热启动算法 – Slow Start

    首先,我们来看一下TCP的慢热启动。慢启动的意思是,刚刚加入网络的连接,一点一点地提速,不要一上来就像那些特权车一样霸道地把路占满。新同学上高速还是要慢一点,不要把已经在高速上的秩序给搞乱了。

    慢启动的算法如下(cwnd全称Congestion Window):

    1)连接建好的开始先初始化cwnd = 1,表明可以传一个MSS大小的数据。

    2)每当收到一个ACK,cwnd++; 呈线性上升

    3)每当过了一个RTT,cwnd = cwnd*2; 呈指数让升

    4)还有一个ssthresh(slow start threshold),是一个上限,当cwnd >= ssthresh时,就会进入“拥塞避免算法”(后面会说这个算法)

    所以,我们可以看到,如果网速很快的话,ACK也会返回得快,RTT也会短,那么,这个慢启动就一点也不慢。

    拥塞避免算法 – Congestion Avoidance

    前面说过,还有一个ssthresh(slow start threshold),是一个上限,当cwnd >= ssthresh时,就会进入“拥塞避免算法”。一般来说ssthresh的值是65535,单位是字节,当cwnd达到这个值时后,算法如下:

    1)收到一个ACK时,cwnd = cwnd + 1/cwnd

    2)当每过一个RTT时,cwnd = cwnd + 1

    这样就可以避免增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值。很明显,是一个线性上升的算法。

    拥塞状态时的算法

    前面我们说过,当丢包的时候,会有两种情况:

    1)等到RTO超时,重传数据包。TCP认为这种情况太糟糕,反应也很强烈。

      • sshthresh =  cwnd /2
      • cwnd 重置为 1
      • 进入慢启动过程

    2)Fast Retransmit算法,也就是在收到3个duplicate ACK时就开启重传,而不用等到RTO超时。

      • TCP Tahoe的实现和RTO超时一样。
      • TCP Reno的实现是:
        • cwnd = cwnd /2
        • sshthresh = cwnd
        • 进入快速恢复算法——Fast Recovery

    上面我们可以看到RTO超时后,sshthresh会变成cwnd的一半,这意味着,如果cwnd<=sshthresh时出现的丢包,那么TCP的sshthresh就会减了一半,然后等cwnd又很快地以指数级增涨爬到这个地方时,就会成慢慢的线性增涨。我们可以看到,TCP是怎么通过这种强烈地震荡快速而小心得找到网站流量的平衡点的。

    快速恢复算法 – Fast Recovery

    TCP Reno

    这个算法定义在RFC5681。快速重传和快速恢复算法一般同时使用。快速恢复算法是认为,你还有3个Duplicated Acks说明网络也不那么糟糕,所以没有必要像RTO超时那么强烈。 注意,正如前面所说,进入Fast Recovery之前,cwnd 和 sshthresh已被更新:

    • cwnd = cwnd /2
    • sshthresh = cwnd

    然后,真正的Fast Recovery算法如下:

    • cwnd = sshthresh  + 3 * MSS (3的意思是确认有3个数据包被收到了)
    • 重传Duplicated ACKs指定的数据包
    • 如果再收到 duplicated Acks,那么cwnd = cwnd +1
    • 如果收到了新的Ack,那么,cwnd = sshthresh ,然后就进入了拥塞避免的算法了。

    如果你仔细思考一下上面的这个算法,你就会知道,上面这个算法也有问题,那就是——它依赖于3个重复的Acks。注意,3个重复的Acks并不代表只丢了一个数据包,很有可能是丢了好多包。但这个算法只会重传一个,而剩下的那些包只能等到RTO超时,于是,进入了恶梦模式——超时一个窗口就减半一下,多个超时会超成TCP的传输速度呈级数下降,而且也不会触发Fast Recovery算法了。

    TCP New Reno

    于是,1995年,TCP New Reno(参见 RFC 6582 )算法提出来,主要就是在没有SACK的支持下改进Fast Recovery算法的——

    • 当sender这边收到了3个Duplicated Acks,进入Fast Retransimit模式,开发重传重复Acks指示的那个包。如果只有这一个包丢了,那么,重传这个包后回来的Ack会把整个已经被sender传输出去的数据ack回来。如果没有的话,说明有多个包丢了。我们叫这个ACK为Partial ACK。
    • 一旦Sender这边发现了Partial ACK出现,那么,sender就可以推理出来有多个包被丢了,于是乎继续重传sliding window里未被ack的第一个包。直到再也收不到了Partial Ack,才真正结束Fast Recovery这个过程

    我们可以看到,这个“Fast Recovery的变更”是一个非常激进的玩法,他同时延长了Fast Retransmit和Fast Recovery的过程。

    ============================over==================================

    参考资料:

    互联网协议入门(一)

    互联网协议入门(二)

    TCP 的那些事儿(上)

    TCP 的那些事儿(下)

    程序员的自我修养——计算机网络

    TCP-IP协议详解(1)邮差与邮局 (网络协议概观)

    TCP-IP协议详解(2) 小喇叭开始广播 (以太网与WiFi协议)

    TCP-IP协议详解(3) IP接力赛(IP, ARP, RIP和BGP协议)

    TCP-IP协议详解(4)地址耗尽危机(IPv4与IPv6地址)

    TCP-IP协议详解(5) 我尽力(IP协议详解)

    TCP-IP协议详解(6) 瑞士军刀 (ICMP协议)

    TCP-IP协议详解(7) 傀儡(UDP协议)

    TCP-IP协议详解(8) 不放弃 (TCP协议与流通信)

    TCP-IP协议详解(9) 爱的传声筒(TCP连接)

    TCP-IP协议详解(10) 魔鬼细节 (TCP滑窗管理)

    TCP-IP协议详解(11) 涅槃 (TCP重新发送)

    TCP-IP协议详解(12) 天下为公(TCP堵塞控制)

    TCP-IP协议详解(13) 9527(DNS协议)

    TCP-IP协议详解(14) 逆袭(CIDR与NAT)

    TCP-IP协议详解(15) 先生,要点单吗?(HTTP协议概览)

    转载请注明:快课网 » 图解TCP-IP协议

    展开全文
  • TCP/IP协议和UDP协议有什么区别呢?

    千次阅读 2021-11-15 19:48:10
    通过TCP协议通信得到的数据流顺序无差错;通过UDP协议通信,数据能否送达,送达的时间以及内容的准确性都无法保证 TCP需要先通过连续三次交换消息建立连接,在建立的连接上相互传送数据 UDP无需连接,每个数据报...
  • PLC通过TCP/IP协议通信实例C#源码

    热门讨论 2015-07-07 11:12:27
    C#写的与PLC通过TCP/IP协议通信的实例,代码供参考
  • [TCP-IP详解卷一:协议][英文版].pdf

    热门讨论 2014-08-19 00:17:21
    [TCP-IP详解卷一:协议][英文版],是[TCP-IP详解卷一:协议]一书的英文版本。
  • TCP-IP技术大全

    千次下载 热门讨论 2007-12-18 15:42:09
    IP和相关协议 第9章 IP协议家族 77 9.1 TCP/IP模型 77 9.1.1 解剖TCP/IP模型 78 9.1.2 协议组件 78 9.2 理解网际协议(IP) 79 9.2.1 IPv4结构 79 9.2.2 IP做什么 80 9.3 理解传输控制协议...
  • 基于Modbus TCP-IP协议的WEINVIEW HMI与PC通讯
  • TCP-IP详解卷3:TCP事务协议TCP-IP详解卷3:TCP事务协议TCP-IP详解卷3:TCP事务协议TCP-IP详解卷3:TCP事务协议TCP-IP详解卷3:TCP事务协议TCP-IP详解卷3:TCP事务协议TCP-IP详解卷3:TCP事务协议TCP-IP详解卷3:TCP...
  • 开机就提示“请安装TCP/IP协议,error=10106”的解决办法 分类: 操作系统 2012-05-25 10:22 4564人阅读 评论(0) 收藏 举报 systeminternet路由器windows浏览器qq 一、问题描述:  今天开机时提示“请安装...
  • TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域...
  • 太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

    万次阅读 多人点赞 2020-05-07 09:30:15
    OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。 二、 TCP/IP 基础 1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为...
  • TCP/IP是大师的另一个优秀的书籍,堪称经典,值得一看。
  • 深入理解网络协议,需要观察它们的工作过程并使用它们,即观察两个协议实体之间交换的报文序列,探究协议操作的细节,使协议实体执行某些动作,观察这些动作及其影响。
  • 1-2TCP/IP协议配置

    千次阅读 2021-10-03 23:16:27
    文章目录1.2.1TCP/IP协议1.2.2基本环境设置 1.2.1TCP/IP协议 一、TCP/IP简介 1.什么是TCP/IP协议 -TCP/IP是最为广泛支持的通信协议集合 -包括大量Internet应用中的标准协议 -支持跨网络结构、跨操作系统平台的通信 2...
  • 计算机网络 | 一文搞懂什么是TCP/IP协议

    万次阅读 多人点赞 2019-10-28 12:48:16
    什么是TCP/IP协议? 计算机与网络设备之间如果要相互通信,双方就必须基于相同的方法.比如如何探测到通信目标.由哪一边先发起通信,使用哪种语言进行通信,怎样结束通信等规则都需要事先确定.不同的硬件,操作系统之间的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 615,135
精华内容 246,054
关键字:

tcp-ip协议