tcp/ip 订阅
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。 [1] 展开全文
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。 [1]
信息
外文名
Transmission Control Protocol/Internet Protocol
简    称
TCP/IP协议
层级结构
4层
所属领域
计算机技术
中文名
传输控制协议/互联协议
TCP/IP协议简介
TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。 [2]  TCP/IP协议是Internet最基本的协议,其中应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;而网络访问层,也叫网路接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。 [3] 
收起全文
精华内容
参与话题
问答
  • 嵌入式 TCP IP 资料汇总

    万次阅读 2013-02-04 14:08:31
    最近看了不少嵌入式以太网方面的资料,这里嵌入式指的是AVR或者STM32之类的可以在无操作系统下运行的案例,并不是linux级别的嵌入式以太网协议栈。感觉上嵌入式以太网的资料还是非常多的,但是也显得非常的杂乱。...

    1.前言

    最近看了不少嵌入式以太网方面的资料,这里嵌入式指的是AVR或者STM32之类的可以在无操作系统下运行的案例,并不是linux级别的嵌入式以太网协议栈。感觉上嵌入式以太网的资料非常多,但是也显得非常杂乱。我简单的整理一些图书和技术资料,供自己和大家参考一下吧!

    2.图书资料

    我个人比较喜欢看书,不太喜欢通过网络乱找资料。以太网(嵌入式web)较为复杂涉及的知识点也比较多,没有书或者不看书是万万不可的。毕竟图书资料通过一定的凝练,体系也比较完整。

    《嵌入式Internet TCP IP 基础 实现及应用》

    这本书正如同书名一样分为三个部分,基础部分讲解的是各种TCP协议栈的基本内容,实现部分讲解如何通过LPC实现以太网的各种协议,例如ARP TCP和UDP。作者有一套自己的编写的协议栈,底层使用CS8900A,采用IAR编译环境,代码实现部分有完整的解释,可以帮助读者了解协议栈如何实现。虽然自己没有动手修改一下,但是还是收获不少。非常值得一读。

    3.国外开源项目

    国外开源项目有很多,总体来说国外的开源项目喜欢使用AVR单片机,这也是我始终不愿放弃该芯片的原因。国外的资料比较多,创意也比较有趣,让人学的很是开心。国外关于嵌入式以太网的项目有两类,一类是嵌入式通用的以太网协议栈,例如uIP和LwIP,还有一种侧重于Web服务器的实现,例如AVRNET和AVR WebServer。

    3.1 AVRNET

    该项目于2007年左右完成,现在已经不更新了。采用的芯片为ATmega32,网站中有完整的电路图,可以通过该电路图使用proteus和winpcap在计算机中仿真运行,这样实践起来并不需要通过真实的开发板。学习嵌入式以太网相关内容,感觉和硬件已经没有太大的联系了,但是需要弄清的是ENC28J60的工作原理,这也是AVRNET项目的使用的以太网驱动芯片。AVRNET项目侧重于web方式实现设备控制和状态查询。为了实现web功能,需要学习HTML相关技术,例如表单,输入框,按钮和提交按钮等,必须理解GET方法和POST方法,必须理解HTTP请求和响应格式。当学习完那么多的基础知识之后,其实实现web控制也就是编写HTML文本,然后通过TCP发送HTML文本。

    AVRNET项目

    国内的许多淘宝店家甩卖的ENC28J60代码可能都出自该项目。硬件电路设计和软件部分设计都是很好的参考资料。

    3.2 AVR WebServer

    从时间和项目维护的角度来说,AVRNET项目应该也参考了AVR WebServer项目。AVR WebServer文档做的更好,实现的功能也可能更多一点。这个项目还没有认真研究,国内著名的开发板野火开发板就参考了这个项目实现了WEB功能。和AVRNET项目相似,该项目也使用ENC28J60作为以太网驱动。

    【2013年10月回顾:Arduino项目关于ENC28J60实现以太网的代码也是参考该项目,不妨一试】

    AVR WebServer项目

    3.3 uIP和LwIP

    uIP和LwIP同出于一人之手,此人是嵌入式以太网中的泰斗。LwIP尚未开始研究,但是uIP却研究了有很长一段时间。uIP实现一个TCP通信算比较方便的,但是由于uIP是一个精简协议栈也使用uIP时存在多种限制。移植这些协议栈需要把握一点,哪些需要修改,而哪些不需要修改。接下来的几篇博文将会谈谈uIP的移植和使用,我想移植说的少一点,应用说的多一点。

    【2013年10月回顾:uIP和LwIP均认真移植测试,应该总结一下和大家分享了】

    uIP学习笔记LwIP学习笔记——STM32 ENC28J60移植与入门ENC28J60学习笔记

     

    展开全文
  • BlackBerry OS 6.0里面设置TCP IP的APN

    千次阅读 2010-11-30 12:46:00
    Options -> Device -> Advanced System Settings -> TCP IP -> APN 其中Device这一项是6.0后面加的。

    Options -> Device -> Advanced System Settings -> TCP IP -> APN

    其中Device这一项是6.0后面加的。

    展开全文
  • sqlserver tcp ip 端口 恢复默认设置 设置 1433 端口 失败 服务sqlserever 启动不了了
  • TCP IP协议之通信详解

    千次阅读 2017-09-08 17:09:26
    一 协议分层  一次网络请求是要经过很多层...下图是TCP/IP协议分层图,注意,虽然ARP和RARP协议都划分在链路层,实际上IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧;同样的,ICMP和IGMP协议虽然划分在网络层
    一 协议分层

          一次网络请求是要经过很多层的,如底层的物理层,再上面的链路层、网络层、传输层以及应用层。当然我们一般工作是针对应用层,但是也需要对传输层有很深刻的了解,传输层个人感觉也是最复杂的。下图是TCP/IP协议分层图,注意,虽然ARP和RARP协议都划分在链路层,实际上IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧;同样的,ICMP和IGMP协议虽然划分在网络层,实际它们都需要IP协议来封装成数据报。在看这篇文章前推荐先看《TCP/IP协议之初识》。


                             图1 协议分层                                                      协议分层参考图

          图1中没有画出的物理层,指的是电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。简单来说物理层都是硬件部分

          链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步、冲突检测、数据差错校验等工作,现在我们平时接触到的基本是以太网。交换机是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式可能不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发

          网络层则主要是经常提及的IP协议,IP协议不保证数据传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装

          传输层则是TCP和UDP协议,TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠的数据流。UDP协议不面向连接,也不保证可靠性

          应用层则是我们自己的应用程序。而在应用程序里面发送的数据,在网络上则不仅仅是那些数据本身,还有各个协议头部,数据包的封装过程如图二所示。各层协议头部和内容在接下来会通过一个例子来分析。


                                                                  图2 TCP/IP数据报封装

    二 基于TCP协议的编程

    1 以太网帧和ARP协议

    从图2可以看到,数据最终都是封装成以太网帧在网络中传输。以太网帧的格式如图3所示:


                                                图3 以太网帧格式

            在TCP编程中,两端通信之前,需要先通过ARP(地址解析协议)协议来确定指定IP的机器的物理地址,也就是它的网卡的硬件地址(MAC),MAC地址长度为48位,在网卡出厂的时候固化在网卡里面的,可以通过命令 ifconfig来查看网卡地址。ARP协议的数据报格式如下:


                     图4 ARP数据报格式

         比如当我们运行命令 ping 192.168.1.100,那么需要先arp协议获取192.168.1.100这个ip对应的MAC地址,下面是一个ARP协议的请求和响应包。通常操作系统会有ARP缓存,所以一次请求后,只要缓存没有过期,下次就可以从缓存中取而不需要发送ARP请求来获取目的IP地址的MAC地址了。

    请求包


                          图5 ARP请求包

    响应包


                 图6 ARP响应包

    对照前面贴出来的以太网帧格式,很容易分析这两个数据包。如以太网帧的头部包含的14个字节,分别是目的地址,源地址以及协议类型。最初因为不知道目的ip地址的mac地址,所以目的地址填的是ff:ff:ff:ff:ff:ff进行广播,协议类型是0x0806。而ARP协议的内容可以参照上图,分布是硬件类型(以太网,标志1),协议类型为IPV4(0x0800),硬件地址长度(6个字节),协议地址长度(IPV4,4个字节),操作码(ARP请求类型为1,ARP响应类型为2),发送方的MAC地址(本机mac地址),发送方ip地址(请求包里是192.168.1.106,响应包是192.168.1.100),目标MAC地址(请求时不知道目标MAC地址,所以填全0,响应包会填写目标MAC地址),目标IP地址(请求包是192.168.1.100,响应包是192.168.1.106)。

    2 Socket编程

    接下来要开始socket编程了,先写一个简单的客户端-服务端。

    #服务端:server.py
    import socket
    
    def start_server(ip, port):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        try:
            sock.bind((ip, port))
            sock.listen(1)
            while True:
                conn, cliaddr = sock.accept()
                print 'server connect from: ', cliaddr
    
                while True:
                    data = conn.recv(1024)
                    if not data:
                        print 'client closed:', cliaddr
                        break
    
                    conn.send(data.upper())
                conn.close()
        except Exception, ex:
            print 'exception occured:', ex
        finally:
            sock.close()
    
    if __name__ == "__main__":
        start_server('127.0.0.1', 7777)
    
    #客户端:client.py
    from socket import *
    import sys
    
    def start_client(ip, port):
        try:
            sock = socket(AF_INET, SOCK_STREAM, 0)
            sock.connect((ip, port))
        print 'connected'
            while True:
                data = sys.stdin.readline().strip()
                print 'input data:', data
                if not data: break
    
                sock.send(data)
                result = sock.recv(1024)
                if not result:
                    print 'other side has closed'
                else:
                    print 'response from server:%s' % result
            sock.close()
        except Exception, ex:
            print ex
    
    if __name__ == "__main__":
        start_client('127.0.0.1', 7777)

           TCP的通信流程如下图所示,可以看到前面建立连接有三次握手,后面关闭连接有四次握手。注意图中是C语言的函数,对应到python的里面发送用的是send函数,读取用的是recv函数。要注意的是,一个TCP连接的套接字对是一个四元组,包括源IP,源端口,目的IP,目的端口。客户端和服务端的状态并不是同步的,如果客户端的ACK发送失败,可能客户端的连接是ESTABLISHED,而服务端对应连接还是SYN_RCVD状态。


    图5 TCP协议通信流程
    TCP的状态有SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急),但日常的分析有用的就是前面的五个字段:

    SYN表示建立连接,

    FIN表示关闭连接,

    ACK表示响应,

    PSH表示有 DATA数据传输,

    RST表示连接重置。

          其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,如果只是单个的一个SYN,它表示的只是建立连接。TCP的几次握手就是通过这样的ACK表现出来的。 但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。PSH为1的情况,一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。TCP的连接建立和连接关闭,都是通过请求-响应的模式完成的。

    三 TCP通信流程实例分析

          接下来要做的就是通过wireshark来观察这个流程。先在一个终端运行 python server.py,然后在第二个终端运行python client.py,这个时候我们看到第二个终端输出connected,表示连接上了。wireshark输出如下:


    图6 TCP建立连接三次握手

          从图中可以看到三次握手的过程,这里我们拿出第一个SYN包来分析下数据包的格式,以太网帧的格式上面我们已经提过了,前面12个字节是目的地址和源地址,因为是本地地址,所以这都是00,然后两个字节帧类型是0800,即IP协议。后面就是IP协议栈和TCP协议栈的内容。

           先看IP协议栈的格式如图7所示,数据包如图8所示,第一个字节0x45中,前4位为版本IPV4,接着4位5为首部长度,代表的是4*5=20个字节,这是指的整个IP数据包的长度。第二个字节0x00为服务类型TOS,有3个位用来指定IP数据报的优先级,现在几乎不用。然后的16位0x003c为IP包的总长度60(首部20字节+数据40字节),可以看到,从IP数据包的第一个字节45开始到最后一共是60个字节。紧接着的16位0xe963为标识,如果IP包大小超过了MTU,则需要进行拆分,这个标识字段就是用于标识哪些包分拆前是同一组的。接着的16位0x4000,前3位为标志位,其中最高位保留为0,第二位为DF(don't fragment)位为1,也就是不分片,第三位为MF(more fragments,更多分片)位为0,因为我们这里没有分片; 接着的13位是片的偏移,这里没有分片,所以为0。接下来的8位0x40为TTL,值为64(TTL在traceroute时就很有用,TTL是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)),再8位是协议字段,指示上层协议是TCP,UDP还是ICMP,IGMP等。我们这里是TCP,所以值为0x06。然后16位0x5356是首部校验和,只校验IP首部,数据的校验由更高层协议负责。然后的32位7f000001是源IP地址127.0.0.1,而接着的32位是目的IP地址127.0.0.1,选项为空,然后接下来的是TCP协议栈内容。

    1 三次握手数据包解析


    图7 IP数据报格式

    图8 IP数据包实例

         TCP段格式和数据段实例如图9,10所示。最开始16位0xdbb8为源端口56280,然后的16位0x1e61为目的端口7777。接着是32位序号0x2d4a6c26即759852070,注意我们看到wireshark中为了显示友好,显示的值为0,那是相对序号(可以在右键的Protocol Preference中取消相对序号选项就可以看到绝对序号了)。接着是32位的确认序号0x00000000。接着的16位中的前4位是首部长度0xa,也就是4*10=40个字节。我们可以看到这里的TCP段正好是40个字节,也就是说没有数据部分,只有首部。接着的6位是保留位,这16位的最后6位是6个标志位0x002,分布是URG,ACK,PSH,RST,SYN,FIN,其中URG先不管,ACK是确认标志,PSH是尽快推送数据到接收进程标志,RST是复位连接标志,SYN是同步序号标志,FIN是完成数据发送标志。我们这里看到只有SYN标志置位为1,表示是同步序号。而后16位0xaaaa,表示窗口大小为43690。再接着就是16位校验和0xfe30,然后是16为紧急指针为0x0000,接着是选项字段。

    TCP选项字段格式分为3部分,kind为选项的类型,length为该选项的总长度(这个总长度包括了kind和length这两个字节在内),info为选项的值,下表是常见的选项值和含义,更多选项值参见参考资料2。

    kind (1字节) length (1字节) info (n字节) 含义
    0 表示选项表结束
    1 空操作nop,一般用于填充tcp选项的总长度为4的倍数
    2 4 MSS 最大段长度
    3 3 window scale 滑动窗口扩大因子
    4 2 SACK 选择性确认
    8 10 timestamp 时间戳值4字节+时间戳回显应答4字节

           可以看到选项字段先是 0x02 04 ff d7表示是MSS,长度为4字节,值为65495。MSS通常等于MTU-20-20,而MTU一般设置为1500,所以一般MSS为1460,当然,考虑到TCP的选项值可能会占据最多20个字节,所以MSS也可能是1460-12-8=1440。而通常的MTU为1500,lo特殊,为65536,所以这里的MSS不是1440,而是一个比较大的值0xffd7=65495。MTU是服务器可配置的,在TCP通信过程中客户端和服务器端会协商最小的MSS作为最终值。TCP有了MSS限制,就可以保证在IP层不用分片了。再接着是0x0402是选择性确认选项,类别为4,总长度为2字节,这里表示没有info。接着的0x08 0a ff ff 85 45 00 00 00 00是时间戳,类别是8,总长度为10,内容为时间戳0xffff8545=4294935877,时间戳回显值为0x0000000=0。然后是1字节的0x01,类别为1,表示空操作,用于填充的。接着是0x03 03 07。类别为3,长度为3,值为7,表示窗口扩大因子为7。


    图9 TCP段格式

    图10 TCP数据段实例

    那么第二阶段SYN+ACK和第三阶段的ACK的数据包类似,分别如下所示,SYN+ACK中的标记是SYN和ACK置位,然后时间戳回显为当前的时间;第三阶段ACK数据包是ACK标记置位和时间戳回显。


    图11 第二阶段SYN+ACK数据包

    图12 第三阶段ACK数据包

    2 发送数据的数据包解析

    下面看看发送数据的包,我们在client.py的终端输入 haha,可以看到捕获到4个数据包,第一个包是客户端发往服务端的,PSH和ACK标志置位,同时数据为haha;第二个包是服务端发往客户端的,ACK标志置位;第三个包还是服务端发往客户端的,PSH和ACK标志置位,这是服务端发送的内容为HAHA;第四个包是客户端发往服务端的,ACK标志置位,确认收到了数据。需要注意的是,客户端和服务端各自维护了一个序号,这是因为TCP是全双工通信。如果某种面向连接的协议是半双工的,通讯过程只能采用一问一答的方式,收和发两个方向不能同时传输,在同一时间只允许一个方向的数据传输,则只需要一套序号就够了,不需要通讯双方各自维护一套序号。服务端发往客户端的ACK是5,这是因为收到的数据长度为4,所以新的请求序号为5(注意都是相对序号),同理看到后面客户端发送数据的序号是5了,序号跟数据长度是相关的。


    图13 发送数据

    3 关闭连接四次握手数据包解析

          关闭TCP连接时,会有四次握手,主动关闭的一方会处于TIME_WAIT状态一段时间再彻底关闭。TIME_WAIT的时间是系统配置参数tcp_fin_timeout设定的,Linux里面一般是60秒,当然我们也可以调短它,关于为什么要有TIME_WAIT的状态,主要原因有两点:其一是为了可靠的实现TCP全双工连接的终止,其二是为了允许老的重复分节在网络中消逝。第一点,假设最后客户端发送的ACK服务端没有收到,则服务端会重发FIN,这个时候处于TIME_WAIT状态的客户端连接还可以重发ACK。否则,如果连接已经关闭,则客户端会发送RST的一个分节,这样服务端会解析为一个错误,这个不是我们想要的。第二点,如果没有TIME_WAIT,那么可能在连接关闭后,新建立一个连接,IP地址和端口跟之前的一样,TCP必须防止老的重复分组或者延迟的分组在该连接后终止后再现,不然无法区分分组来自老的连接,还是新的连接的,如下图所示。当然这个情况很难出现,因为新的连接和老的连接必须是两边的IP地址和端口都一样,而且老的分组的ISN编号也要有效。通常,新的连接会采用一个随机的端口号,很难这么凑巧跟之前一样,而要之前老的分组的序列号ISN也几乎不可能有效。因此,TCP禁止处于TIME_WAIT状态的端口发起新的连接,在TIME_WAIT时间过后,建立新的连接,基本可以保证该连接以前的老的化身的重复分组已经消逝。


    图14 TIME_WAIT存在的缘由

    在第二个终端,CTRL+C关闭client.py,可以看到wireshark捕获到的数据包如下,这里看到服务端的FIN和ACK合并在了一个数据包里。而且可以看到客户端连接处于TIME_WAIT状态,过一段时间后才关闭。


    图15 关闭连接四次握手

    图16 TIME_WAIT状态查看

    四 总结

         这是TCP/IP协议的第一篇,总结下各个协议的格式和数据包的分析,第二篇会重点分析下诸如SO_REUSEADDR, backlog等参数的意义,特别是backlog参数,是查了好多资料才明白一二。


    参考文献:
    《Unix网络编程》




    展开全文
  • tcp ip协议概念清晰化

    千次阅读 2013-11-16 10:49:32
    TCP/IP簇以及相关网络知识大普及 TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)是用于计 算机通信的一个协议簇。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供...

    1 HTTP协议及其相关概念

    会话:浏览器一次访问web服务器从打开到关闭的全过程。
    无连接:无连接的含义是限制每次连接只处理一个请求。
    无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。

    2 TCP/IP簇以及相关网络知识大普及

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)是用于计

    算机通信的一个协议簇。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己

    的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全

    正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。

        由于TCP/IP具有很强的互连性,目前,几乎所有的网络操作系统都提供对TCP/IP的支持,TCP/IP已经

    是Internet的标准协议。TCP/IP协议族包括诸如Internet协议(IP)、地址解析协议(ARP)、互联网控制信

    息协议(ICMP)、用户数据报协议(UDP)、传输控制协议(TCP)、路由信息协议(RIP)、Telnet、简单邮件传

    输协议(SMTP)、域名系统(DNS)等协议。

    TCP/IP协议层次结构
        (1)应用层应用层包含一切与应用相关的功能,相当于OSI的上面三层。我们经常使用的HTTP、FTP、

    Telnet、SMTP等协议都在这一层实现。

        (2)传输层传输层负责提供可靠的传输服务。该层相当于OSI模型中的第4层。在该层中,典型的协议

    是TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。其中,TCP提供可靠、有序的

    ,面向连接的通信服务;而UDP则提供无连接的、不可靠用户数据报服务。

        (3)网际层网际层负责网络间的寻址和数据传输,其功能大致相当于OSI模型中的第3层。在该层中,

    典型的协议是IP(Internet Protocol)。

        (4)网络接口层最下面一层是网络接口层,负责数据的实际传输,相当于OSI模型中的第1、第2层。

    在TCP/IP协议族中,对该层很少具体定义。大多数情况下,它依赖现有的协议传输数据。

        TCP/IP参考模型与OSI参考模型最大的不同在于OSI是一个理论上的网络通信模型,而TCP/IP则是实际

    运行的网络协议。TCP/IP实际上是由许多协议组成的协议簇。

    1.IP
      IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高

    层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,

    因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的

    地址(源地址)和接收它的主机的地址(目的地址)。
    2.TCP
      TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的

    所以只能用于点对点的通讯。
      如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进

    行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被

    排序,而损坏的包可以被重传。
      TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送

    回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
    3.UDP
      UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以

    可以实现广播发送。UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中

    要求在程序员编程验证。
    4.ICMP
      ICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信

    息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路

    径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的

    服务。

    5.ip地址:主机门牌号,唯一的网络地址。
    uri:通用资源标识符网络资源唯一标识地址
    url:统一资源定位符网络资源唯一标识地址

    6.地址分类:
    A类地址0+7位网络号+24位主机号
    B类地址10+14位网络号+16位主机号
    C类地址110+14位网络号+8位主机号
    D类地址1110+组播地址
    E类地址11110+保留地址

    7.网关地址
      若要使两个完全不同的网络(异构网)连接在一起,一般使用网关,在Internet中两个网络也要通过

    一台称为网关的计算机实现互联。这台计算机能根据用户通信目标计算机的IP地址,决定是否将用户发出

    的信息送出本地网络,同时,它还将外界发送给属于本地网络计算机的信息接收过来,它是一个网络与另

    一个网络相联的通道。为了使TCP/IP协议能够寻址,该通道被赋予一个IP地址,这个IP地址称为网关地址


    8.子网划分
    子网掩码:IP地址和子网掩码合作而得到网络编码(网络号)
    子网作用:
      使用子网是要解决只有一组C类地址但需要数个网络编码的问题,并不是解决IP地址不够用的问题,

    因为使用子网反而能使用的IP地址会变少,子网通常是使用在跨地域的网络互联之中,两者之间使用路由

    器连线,同时也上Internet,但只申请到一组C 类IP地址,过路由又需不同的网络,所以此时就必须使用

    到子网,当然二网络间也可以远程桥接(Remote Bridge,字面翻译)连接,那便没有使用子网的问题。
    子网划分:
      网络编码(网络号):经过子网划分后,子网掩码序列中“1”对应的IP地址部分。一个网络编码,

    对应一个网域(或网段)。包括申请到的网络地址的全部和主机地址的部分。  主机编码(主机号)

    :经过子网划分后,子网掩码序列中“0”对应的IP地址部分。一个主机编码,对应一个网域(或网段)

    的一台计算机。包括申请到主机地址的部分。  子网掩码:用于子网划分,它将能够改变的主机地址

    分为主机编码和网络编码的一部分。同时,它将网络地址全部确定为网络编码。
    9.地址转换
    ARP(地址解析协议):ip地址(网络层)->物理地址(网络接口层)
    RARP(逆地址解析协议):物理地址->ip地址
    DNS:域名->ip

     

    展开全文
  • tcp ip协议 通过抓包分析

    千次阅读 2018-06-29 13:06:50
    首先展示一个tcp包里面数据链路层 14个字节 包含源mac地址6字节 与目标mac地址6字节 与协议标记 type 16位2个字节网络层ip协议 传输层tcp协议 网络层则主要是经常提及的IP协议,IP协议不保证数据传输的可靠性,...
  • TCP IP与UDP含义 区别 总结

    千次阅读 2018-06-08 10:47:39
    TCP/IP协议(一)网络基础知识OSI参考模型中每个分层的作用1.3.1 应用层:为应用程序提供服务并规定应用程序中通信相关的细节;包括的协议如下:①:超文本传输协议HTTP:这是一种最基本的客户机/服务器的访问协议;...
  • TCP IP协议栈的各个层次

    千次阅读 2015-02-10 15:08:13
    我们知道,TCP IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示  图 TCP IP协议栈  两台计算机通过TCP IP协议通讯的过程如下所示  图...
  • 转载: https://blog.csdn.net/clirus/article/details/50594688 ... 客户端发生了异常给服务器发送消息,释放连接。 有可能服务端发送的报文导致客户端异常。 此时需要客户端给出释放连接的原因。 ... ...
  • modbus TCP IP功能码及报文解析

    万次阅读 2015-07-04 14:18:46
    000014-Tx:03 6D 00 00 00 06 01 03 00 00 00 0A Client request: 03 6D两个字节是主机发出的检验信息,从机只需将这两个字节的内容copy以后再放到response的报文... 00 00 两个字节表示tcp/ip的协议是modbus协议
  • 【计算机网络】TCP IP通信处理过程

    千次阅读 2018-06-19 21:58:12
    1.数据包首部 每个分层中都会对所发送的数据附加一个首部,其中包含了该层必要的信息,如发送端地址、接收端地址以及协议等相关信息。 2.发送数据包 ...TCP根据应用的提示,负责建立连接、...
  • linux-Tcp IP协议栈源码阅读笔记

    万次阅读 热门讨论 2006-02-19 17:10:00
    一.linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件 主要有:/...
  • nginx 设置多个tcp IP代理 socket 转发

    千次阅读 2017-02-27 18:47:05
    stream {  upstream server1{  hash $remote_addr consistent;  server 127.0.72.60:3000;  }  server {  listen 8400;  proxy_connect_timeout 50s;  proxy_t
  • 重点是这里面的"insecure-registries":["ip:port"] ,如果没有这句话,就把这句话加上去。 然后,重点来了。想要把文件成功push,还有两步。 比如,你想把某个本地已经存在的镜像 aim 上传到服务器,步骤: 1 ...
  • ASP.NET Socket TCP IP+端口 进行通信连接

    千次阅读 2012-08-07 16:18:56
    private void SocketSend()  {  //创建发送数据的Socket  Socket sendsocket = new Socket(AddressFamily.InterNetwork, ... SocketType.Stream, ProtocolType.Tcp);  //设置发送数据的地址
  • TCP/IP协议

    千次阅读 2019-11-08 22:55:37
    TCP/IP协议 TCP/IP: TCP/IP的全称为...TCP/IP协议从名字上面看是指TCP协议和IP协议,但是实际上不仅仅指的是TCPIP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TC...
  • TCP IP网络编程 (韩)尹圣雨pdf下载

    千次阅读 2015-07-14 17:06:39
    本书涵盖操作系统、系统编程、TCP/IP协议等多种内容,结构清晰、讲解细致、通俗易懂。书中收录丰富示例,详细展现了Linux和Windows平台下套接字编程的共性与个性。特别是从代码角度说明了不同模型服务器端的区别,还...
  • TCP IP网络编程》(韩)尹圣雨PDF下载

    千次阅读 多人点赞 2020-04-12 21:41:26
    终于让我找到了,虽然没有目录,但也很清楚了,链接https://pan.baidu.com/s/1hqVLOJM (那些弯弯绕绕最后还要你付钱的,不做评价) 如果需要电子版源码,这个博主一章一章地分享了:......
  • 资料分享:《TCP IP详解 三卷全》高清PDF,有的带书签。喜欢的朋友可以下载看看。 下载地址:http://vdisk.weibo.com/s/8ySI9
  • 文章目录网络协议TCP/IP协议IP协议TCP协议(传输控制协议)HTTP协议(超文本传输协议)网络参考模型1、OSI参考模型(开放系统互连参考模型 )2、TCP/IP参考模型(简化的七层OSI模型) 网络协议 网络协议为计算机...
  • TCP/IP学习笔记——TCP/IP网络起源(一)

    千次阅读 多人点赞 2018-11-05 21:44:45
    一、1984年,美国国防部将TCP/IP作为计算机网络的标准。 二、TCP/IP 是什么 IP世界的 根本大法是TCP/IP协议族。IP世界是由通信实体构成的,而通信实体 是要分层的。  国际标准化组织ISO与1984年建立一套非常抽象...
  • OSI,TCP/IP,五层协议的体系结构,以及各层协议OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):...
  • 遇到在运行frps时提示:Create server listener error, listen tcp ip:7000: bind: cannot assign requested address 编辑frps.ini配置文件 设置 bind_addr = 0.0.0.0 或删掉 bind_addr 这一行 ...
  • tcp 和 udp的区别?

    千次阅读 多人点赞 2019-06-27 11:50:20
    tcp 和 udp的区别? TCP 协议官方定义 维基百科介绍 UDP 协议官方定义 维基百科介绍 可参考:TCP、UDP 协议...命名为 TCP/IP 协议的原因是 TCPIP 这两个协议非常重要,应用很广。 TCP 和 UDP 都是 TCP/IP...
  • TCP/IP协议】传输层TCP协议

    千次阅读 2018-07-03 12:07:45
    TCP协议报文:
  • TCP/IP协议详解

    万次阅读 多人点赞 2019-05-11 08:40:41
    认识HTTP协议 它是互联网协议(Internet Protocol Suite),一个网络通信模型,是互联网的一个基本的构架。 HTTP协议是Hyper Text Transfer ... HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件...
  • TCP/IP 协议】 TCP/IP 基础

    千次阅读 2014-10-20 11:49:24
    1. TCP / IP 协议分层, 简单介绍了 链路层, 网络层, 传输层, 应用层的主要协议 . . . 2. 互联网 IP 地址分类 : A B C D E 类地址如何分类, 以及 IP 地址范围 . . . 3. 域名 和 端口号 的使用 . . . 4. TCP / IP ...

空空如也

1 2 3 4 5 ... 20
收藏数 124,178
精华内容 49,671
关键字:

tcp/ip