图片
TCP/IP协议并不是单纯的俩个协议,而是一个很大的协议栈的总称。TCP/IP 协议栈是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。...网络协议有OSI七层协议和TCP/IP四层协议,还有一个五层协议,其实四层协议可以看做是七层协议的简化版。 ?...TCP/IP协议栈分为四层,每一层都由特定的协议与对方进行通信,而协议之间的通信最终都要转化为 0 和 1 的电信号,通过物理介质进行传输才能到达对方的电脑,因此物理介质是网络通信的基石。...为了解决这些问题,网络层引入了三个协议,分别是IP协议、ARP协议、路由协议。 IP协议制定了IP地址来判断俩个主机是否属于同一个子网。 ARP协议根据IP地址获取MAC地址。...目标机接收到数据包后,采用对应的协议,对帧数据进行组装,然后再通过一层一层的协议进行解析,最终被应用层的协议解析并交给服务器处理。 本篇文章只是对TCP/IP协议有一个总体的认知。
在此常见的协定有: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等 二、TCP/IP协议四层模型 TCP/IP网络协议栈分为应用层(Application)、传输层(Transport...应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示: ?...使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。 目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?整个过程如下图所示: ?...以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。...参考: 《Linux C 编程一站式学习》 《TCP/IP详解 卷一》
现在只需要知道TCP/IP协议栈的初始化是通过fs_initcall宏来完成的就行。...TCP/IP协议栈的初始化函数为 inet_init static int __init inet_init(void) { struct inet_protosw *q; struct list_head...网络协议族接口,定义在 include/linux/net.h struct net_proto_family { int family; int (*create)(struct net *...linux/socket.h中,常用的有 PF_UNIX Unix domain sockets PF_INET Internet IP Protocol...至此,协议栈的初始化就完成了。
图片来源自网络,保持更新;更多内容请关注 cnblogs.com/xuyaowen
: IP协议 (网际协议), ICMP 协议 (Internet 互联网控制报文协议), IGMP 协议 (Internet 组管理协议); -- 网络层提供者 : 网络层 和 传输层的功能 一般由 ...分组数据包未打到目的主机也不会重发, 该协议属于非可靠性传输协议; (3) ICMP 协议 ICMP 协议 : IP 协议附属协议, 用于主机 和 路由器间交换错误报文 和 其它重要信息; -- 作用...协议 : -- 作用 : 从分组数据包 IP 地址解析物理地址 (MAC 地址) 协议; RARP 协议 : 逆地址解析协议; (5) IGMP 协议 IGMP 协议 (Internet 组网管理协议...(传输控制协议), UDP 协议 (用户数据报协议); (2) TCP 协议 TCP 协议 (传输控制协议) : 面向链接协议, 该协议为两台主机提供可靠的数据通信; -- 分块传网络层 : 在 运输层..., HTTP 协议对应 OSI 七层协议中的 表示层协议, 在 TCP/IP 协议中属于 应用层协议; (3) FTP 协议 (文件传输协议) FTP 协议简介 : -- 传输过程 : FTP 协议文件传输会建立两个
wireshark或tcpdump相信大家都用过,这些工具看起来都很酷,因为我们平时都是在界面看到应用层的数据,这些工具居然可以让我们看到tcp/ip协议栈每层的数据。...本文介绍一下查看tcp/ip协议栈数据的方法。并实现一个简陋的sniffer,通过nodejs暴露出来使用。我们先看实现。...stdio.h>#include #include #include #include #include #include #include #include #define DATA_LEN 500 static...0 : timeout;} 以上就是实现捕获tcp/ip协议栈数据包的底层原理。代码仓库https://github.com/theanarkh/node-sniffer
1、简介 TCP/IP协议并非单指TCP协议、IP协议,它是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message...Protocol)协议和其他一些协议的协议组(是一个协议集合),大家叫的时候方便说,所以统称为TCP/IP。...相对应的一些协议 ?...3、TCP/IP中的协议 3.1、IP协议 IP(Internet protocol),这里的IP不是值得我们通常所说的192.168.1.1,这个IP指的是一种协议,是TCP/IP的心脏,也是网络层中最重要的协议...5、参考文献 《HTTP协议—— 简单认识TCP/IP协议》 《简述TCP/IP模型的TCP/IP协议族》 PS:本菜鸟刚接触TCP/IP协议没多久,并没有这么牛逼达到融会贯通的地步。
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet...国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。...TCP/IP协议族按照层次由上到下,层层包装。 最上面的就是应用层了,这里面有http,ftp,等等我们熟悉的协议。 第二层则是传输层,著名的TCP和UDP协议就在这个层次。...第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。 第四层是叫数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。
大家好,又见面了,我是你们的朋友全栈君。 TCP/IP协议 1.链路层:数据链路层或网络接口层(网络接口层和硬件层),通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。...ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。 IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。...当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图所示。...当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149091.html原文链接:https://javaforall.cn
TCP/IP协议 TCP/IP协议概述 TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。...TCP/IP层次结构图 .png 网络层协议(IP协议) IP协议是网络层的主要协议,是Internet最重要的协议。在IP协议中规定了在Internet上进行通信时应遵守的规则。...IP协议的数据格式如下: ? 网际协议IP数据格式.png 版本号:协议的版本号,不同版本的协议格式或语言可能不同,现在常用的是IPV4。...传输层协议(TCP和UDP) 1.TCP协议 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议,由IETF的RFC 793说明。...两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。
TCP/IP 是不同的通信协议的大集合。 ---- 协议族 TCP/IP 是基于 TCP 和 IP 这两个最初的协议之上的不同的通信协议的大集合。...---- SSL - 安全套接字层(Secure Sockets Layer) SSL 协议用于为安全数据传输加密数据。...---- FTP - 文件传输协议(File Transfer Protocol) FTP 负责计算机之间的文件传输。...---- NTP - 网络时间协议(Network Time Protocol) NTP 用于在计算机之间同步时间(钟)。...---- BOOTP - 自举协议(Boot Protocol) BOOTP 用于从网络启动计算机。
TCP/IP TCP/IP协议其实是一系列与互联网向关联的协议集合起来的总成。...分层管理是TCP/IP协议的重要特征; TCP/IP协议族分层 TCP/IP协议族是有一个四层协议组成的系统,这四层分别为:应用层,传输层,网络层和数据链路层; ?...在传输层有两个性质不同的协议:TCP,UDP; 网络层:网路层用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。...应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示: ?...数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。 TCP数据报格式 ?
TCP/IP协议的工作流程如下: 在源主机上,应用层将一串应用数据流传送给传输层。 传输层将应用层的数据流截成分组,并加上TCP报头形成TCP段,送交网络层。...TCP/IP 协议的七层 **应用层(Application layer) ** 表示层(Presentation layer) 会话层(Session layer) 传输层(Transport layer...建立连接协议(三次握手) 客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。...连接终止协议(四次挥手) 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。
经过前两节的准备,我们完成了数据链路层,已经具备了数据包接收和发送的基础设施,本机我们在此基础上实现上层协议,我们首先从实现ARP协议开始。...先简单认识一下ARP协议,ARP是一种寻址协议,它要找寻目标的物理地址,连接在互联网上的设备有两种地址,一种叫IP,也就是我们常见的192.168.2.1这类地址,另一种叫物理地址,例如我们电脑上的mac...网络协议的本质其实就是填表单。ARP协议的实现也是填写一系列表单,发给对方,对方根据表单要求也填写一张表单发回来,我们看看这张表单的结构: ? 这张表上头的0-32单位是比特位而不是字节,要注意。...接下两字节也就是protocoal type,表示数据传输使用的网络协议,如果数据包使用IP定位接收目标所在的局域网,那么该值写死为0x0800,我们实现的协议也是把这两个字节写死。...我们在实现ARP协议时,除了按规定填表和读表外,我们还需要做的工作是提供缓存机制。
从本节开始,我们打算使用java把tcp/ip网络协议栈重新实现一遍。这是一个不小的野心,自然也是一个不小的工程,好在前面顺利完成了操作系统,编译器两门课程的实现,这给了我极大的信心。...整个互联网系统分为三大支柱,分别是操作系统,编译器,和网络协议,我们完成了前面三者,还剩第三者一直孤悬在那,直到今天我终于下定决心,尝试着把tcp/ip协议栈也重新实现一遍。...对于网络协议栈而言,绝大多数人都是”只见过猪跑,但没吃过猪肉“,这绝对是一种巨大的遗憾。...我们要开发的协议栈采取四层架构: ?...协议栈设计的最巧妙之处在于,上层协议只需要关注自己的数据处理,剩下的问题交由下层协议处理,这种方式将一个相当复杂的系统分而治之,一个复杂度极高的系统级怪兽就被庖丁血牛似的给肢解掉了,在后面的编码实现中,
图解TCP/IP协议 本文通过图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。 ?...只有同步了序列号才有可靠的传输,TCP协议的许多特性都是依赖序列号实现的,比如流量控制、消息丢失后的重发等等,这也是三次握手中的报文被称为SYN(Synchronize Sequence Numbers...试想一下,如果一个网络内有成千上万的TCP连接都这么行事,那么马上就会形成“网络风暴”,TCP这个协议就会拖垮整个网络。为此,TCP引入了拥塞控制策略。
15、TCP/IP协议 几台孤立计算机系统组在一起形成网络,几个孤立网络连在一起形成一个网络的网络,即互连网。一个互连网就是一组通过相同协议族互连在一起的网络。...15.1、TCP传输协议 TCP通过以下方式来提供可靠性: (1)应用数据被分割成TCP认为最适合发送的数据块,这与UDP完全不同,应用程序产生的数据报长度保持不变。...建立TCP连接协议:(建立一个连接需要三次握手、而终止一个连接要经过四次握手) (1) 请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN)。...15.2、IP协议 IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。...15.3、UDP用户数据报协议 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。
互联网层不区分各种传输层协议。IP承载着各种不同上层协议的数据。这些协议都由一个独特的协议号来标识:例如,互联网控制消息协议(ICMP)和互联网组管理协议(IGMP)分别是协议1和2。...应用层 应用层包括许多协议,大多数应用程序将这些协议用于提供用户服务或通过低层协议建立的网络连接交换应用数据。这可能包括一些基本的网络支持服务,如路由和主机配置协议。...应用层协议的例子包括超文本传输协议(HTTP)、文件传输协议(FTP)、简单邮件传输协议(SMTP)和动态主机配置协议(DHCP)。...根据应用层协议编码的数据被封装到传输层协议单元(如TCP或UDP消息)中,再利用低层协议实现实际的数据传输。...此外,TCP/IP模型还区分了用户协议和支持协议,支持协议为网络基础设施系统提供服务。用户协议用于实际的用户应用。例如,FTP是一种用户协议,DNS是一种支持协议。
BootP(Bootstrap Protocol,引导协议)是使用传输层UDP协议动态获得IP地址的协议。 ?...在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组成套接字(socket),唯一的确定一条TCP连接。...TCP协议和UDP协议使用16bits端口号(或者socket)来表示和区别网络中的不同应用程序,网络层协议IP使用特定的协议号(TCP 6,UDP 17)来表示和区别传输层协议。...网络层位于TCP/IP协议栈数据链路层和传输层中间,网络层接收传输层的数据报文,分段为合适的大小,用IP报文头部封装,交给数据链路层。...协议字段确定在数据包内传送的上层协议,和端口号类似,IP协议用协议号区分上层协议。TCP协议的协议号为6,UDP协议的协议号为17。
领取专属 10元无门槛券
手把手带您无忧上云