TCP IP相关知识
-
与TCP/IP协议的一次邂逅引言 最近LZ有了一点时间,于是便拿出TCP/IP的书本开始啃。开始的时候,啃起来枯燥无味,现在好不容易有点开窍,于是赶忙记录一下,生怕自己一转眼就给忘了。不过计算机系统原理就有点可惜了,最近一直没时间看,选来选去,还是觉得TCP更加重要一些,或者说现阶段更加重要一些。 好了,废话不多说,我们开始记录吧。 TCP/IP是什么 要讨论tcp/ip,就必须知道它究竟是什么东西。这是开始逐渐深入一个东西的前提,tcp/ip也不例外。 LZ用自己的话回答一下这个问题,tcp/ip是什么? 简单的说,tcp/ip就是一套规矩。两个计算机要互相通信,就得有规矩,一个非常普遍的例子就是发信件。想像一下,如果信件上面的地址和邮编等信息是随便写的,那么目的地的邮递员收到信件时,一定会一头雾水,不知道到底要送到哪。同样的,如果收件人是“额买瑞肯”,而你写的字是“拆泥渍”,对方肯定是看不懂的,所以双方的语言也要相通。 计算机之间要通信,也需要规矩,于是tcp/ip就出现了。tcp和i
-
你可能没有细究过的TCP/IP作为互联网时代伟大发明的TCP/IP技术可以说对当今时代产生了深刻的影响。经过近一个月的学习摸索,基本清楚了TCP/IP的面貌。由于TCP/IP在OS中位于内核态,很多细节其实用户无法感知,所以自己对于TCP/IP会有一些疑惑。关于其中几个点经过查阅一些书籍、博客并结合自己的一些理解,在此整理精炼成帖。 疑惑1 — 关于拥塞 疑惑一:无论是满启动还是拥塞避免阶段,拥塞窗口都在增加,理论上一定会碰到拥塞点,为什么平时感觉不到拥塞呢? 看了很多书和文献以后可能的解答如下: 1、OS中对接收
-
15 张图,了解一下 TCP/IP 必知也必会的 10 个问题一、TCP/IP模型 TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。 基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示TCP/IP模型与OSI模型各层的对照关系。 TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp 等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次。第三层是网络层,IP协议就在这里,它负
-
网络分层模型和TCP/IP协议族(下篇)网络分层模型和TCP/IP协议族 ——IP协议这一篇文章主要记录IP协议相关内容。IP协议是干什么的?寻址 + 路由选择寻址中的址是什么?首先,它不是mac地址,而是ip地址,那么ip地址又是个什么东西呢?我在这里,举一个简单的例子:因为二进制数写起来和读起来都比较费劲,所以我们一般都换算为十进制。其对应的子网掩码是这样的11111111 11111111 11111111 00000000转换为十进制,也就是:255 255 255 0接着我们来依次对应下,这张图可以清楚的表示:这里还提到了一个有意义的简写如果子网掩码的前24位都是1的话,那么我们可以这样简写:/24接下来补充一下,常见的ip地址列表。ip地址列表image.png这里的127.0.0.1 环回也就是 本机地址。寻址+路由ip协议中的路由分配以及寻址是怎么个过程呢?接下来慢慢分析。同一个内网传递数据给出一个case:同一个网段下,computerA想给computerB发送数据。步骤:首先,对应的是应用层然后,把它扔进了TCP协议里,给它
TCP IP相关课程
TCP IP相关教程
- 2. 实现-TCP/IP 协议 Http 和 TCP/IP 都是协议,它们的不同之处在于:HTTP 是浏览器和后台服务之间的语言,而 TCP/IP是电脑之间的语言(相同的语言才能互相理解双方要表达的意思)。Http 本身只是约定了传输的时候文字要是什么格式,具体文字如何转成物理的高低电平穿越电脑实现传输的过程它是不知道的。所以它需要借助专业的人士 TCP/IP 来处理。TCP/IP 是专门解决主机之间信息传输的,它不局限于为 Http 服务,像发送邮件也有自己的邮件协议(SMTP),它的底层也需要借助 TCP/IP 来实现。(TCP/IP是整套完整的网络传输框架模型,HTTP 也是属于它里面的应用层)。
- 4. TCP/IP 协议族 TCP/IP 协议族包含了很多协议,一些比较重要的、常用的协议展现如下:依据 TCP/IP 参考模型,我们把协议栈从上到下分为 4 层,每一层都有相应的协议。应用层HTTP(Hypertext Transfer Protocol)超文本传输协议,只要你浏览页面就会用到此协议。SMTP(Simple Mail Transfer Protocol)简单邮件传输协议,用于电子邮件传输。FTP(File Transfer Protocol)文件传输协议,用于文件的上传和下载。现在 FTP 貌似用的不多了,早期主要是在公司内部、大学等研究机构用的比较多。RTMP(Real-Time Messaging Protocol)实时消息协议,用于实时流媒体传输,主要用在音视频直播领域,属于 Adobe 公司出品。不过,从 2020 年开始,Adobe 就不再支持 RTMP 协议了。SNMP(Simple Network Management Protocol)简单网络管理协议,用于电信网络设备的管理。比如,监控设备告警,对设备进行业务配置等。主要是在思科、华为等电信网络设备上用的比较多。其实,应用层除了以上诸多知名协议外,也可以是用户自定义协议。传输层TCP(Transmission Control Protocol)传输控制协议,是面向连接的、可靠的、面向字节流的传输协议。TCP 应用非常广泛,是端到端传输的基石。UDP(User Datagram Protocol)用户数据报协议,是无连接的、不可靠的、面向消息的传输协议。UDP 实时性好,效率高,在音视频传输中有着广泛的应用。网络层IPv4 (Internet Protocol version 4)此协议主要是用于 IP 分组的路由转发,是路由器主要实现的协议。我们经常说的 IP 地址是指 IPv4 地址,用 32 bit 来表示。IPv6 (Internet Protocol version 6)此协议工作原理类似 IPv4。之所以设计 IPv6 的目的是因为上世纪 90 年代中期,因特网爆炸式的增长,32 位 IPv4 地址不够用了,为此才设计了 128 位的 IPv6 地址。ICMP(Internet Control Message Protocol)因特网控制消息协议,主要是用于显示网络错误。比如,我们用 ping 的时候,有时会显示“网络不可达”的错误。ICMPv6 (Internet Control Message Protocol Version 6)整合了 ICMP 协议,针对 IPv6 开发的协议。IGMP(Internet Group Management Protocol)因特网组管理协议,主要是用于 IP Multicast 的场景,比如观看 IP 电视节目。链路层ARP(Address Resolution Protocol)地址解析协议,主要是用于生成 IP 地址和物理地址(比如以太网 MAC 地址)的映射表,用于数据包的快速转发。RARP(Reverse Address Resolution Protocol)反向地址解析协议,主要是用于生成物理地址和 IP 地址的映射。以上这些协议属于计算机网络的基础协议,需要很好的掌握其工作原理。
- 3. ISO/OSI 七层模型和 TCP/IP 四层模型 网络分层的主要是采取分治策略,使得复杂问题简单化,网络模块组件化。每一层都有自己的职责,每一层对上一层提供服务,这样实现了职责单一,进而提高了组件的复用性。。在网络标准化过程中,国际标准化组织(ISO)把计算机网络分为 7 层,叫做开放系统互联模型(OSI)。同时,TCP/IP 四层模型正处于开发阶段。最终,OSI 模型和 TCP/IP 模型有一些差异,对比图如下:从图中可以看出,ISO/OSI 七层模型和 TCP/IP 四层模型之间存在两个差异:TCP/IP 参四层模型没有表示层和会话层。那么,TCP/IP 参考模型不需要表示层和会话层吗?答案是:“如果需要这两层,就由应用程序员来实现”。经过这么多年发展来看,需要表示层和会话层的场景并不多。TCP/IP 模型好像没有链路层,其实在网络协议实现过程中,链路层包含了网卡驱动部分和物理介质部分,所以通常把二者统一叫做链路层。各层具体功能解释如下:应用层(Application Layer) 是由应用程序自定义的协议格式。不同的领域,对网络应用程序的需求是不同的,必须给用户自定义协议格式的权利。最广泛的应用层协议应该是 HTTP 了吧,几乎每个人都在用。表示层(Presentation)主要是定义数据格式。比如,加密和解密、压缩和解压缩。在 TCP/IP 模型中,表示层协议包含在应用层里。比如 SSL/TLS 协议。会话层(Session Layer)用于在两个通信实体之间建立会话、维护会话、终止会话。设置检查点,当系统出现崩溃拉起后,通过寻找检查点恢复运行。在 TCP/IP 模型中,会话层协议包含在应用层里。比如 NetBIOS 协议。传输层(Transport Layer) 是在两个通信主机之间进行报文传送。在 TCP/IP 模型中最重要的两个传输协议就是 TCP 和 UDP,前者是可靠的、面向字节流的传输;后者是不可靠的、面向数据报(Datagram)的传输。提示:通常把 TCP 传输的报文称作报文段(Segment)。通常把 UDP 传输的报文称作消息(Message)或者是数据报(Datagram)。网络层(Network Layer)是将 IP 分组从源端路由到目的端。网络层是为传输层服务的,在发送端的网络层收到传输层的数据后,必要时会对数据切片以后再封包发送。实现网络层协议是路由器的主要职责,是构建通信子网的基础。比如, RIP、OSPF 就是最基础的路由协议。路由器是通过 IP 分组的目的 IP 地址查找本地路由表,寻找转发的目标端。所以路由器的主要工作就是路由选择和转发,IP 分组是逐跳(hop)转发的。提示:通常把网络层传输的报文叫做 IP 分组(Packet)。链路层(Data Link Layer)是为网络层服务的。发送的时候将网络层的数据分片,封装成帧(Frame),然后顺序发送。与网络层实现端到端的路由不同,链路层是实现节点之间的数据传送。常用的链路层协议就是以太网(Ethernet)协议。提示:通常把链路层传输的报文叫做帧(Frame)。物理层(Physical Layer)是描述如何在物理介质中传输 bit 位。比如,用多少伏电压表示“1”,用多少伏电压表示“0”等。我们把分层的网络参考模型叫做协议栈(Protocol Stack)。目前所有网络协议栈的实现都采用了 TCP/IP 参考模型。协议栈的实现是包含在操作系统内核中的,比如 Windows 和 Unix-like 系统。
- 2.1 TCP 和 UDP 面试官提问: TCP 协议和 UDP 协议有什么区别?有什么共同点?题目解析:相同点:两个协议最大的共同点是都位于 TCP/IP 网络模型的传输层。不同点:我们通过表格的形式对比不同。TCP(Transmission Control Protocol,传输控制协议)UDP(User Datagram Protocol,用户数据报协议)是否连接面向连接无连接传输方式面向字节流:直接以字节流形式传输面向报文:对于应用程序交付的数据,添加首部之后就交付给 IP 层首部格式 20 个字节的固定首部只有 8 个字节是否可靠可靠传输,依靠流量控制和拥塞控制不可靠传输连接对象个数一对一连接支持一对一(点到点),一对多以及多对多传输适用场景要求可靠传输的场景,例如发送邮件和传输文件对可靠性要求低,效率要求高的场景,例如 QQ 的视频通话根据表格中的特点对比我们可以总结得到:TCP 协议面向连接并且可靠,UDP 协议无连接并且不可靠;虽然 UDP 协议不可靠,但是在对数据完整性要求低,对传输速度要求高的场景,可以适用 UDP 协议。
- 2. IP 地址 IP 地址有 IPv4 和 IPv6 两个版本。IPv4 地址长度是 32 bit,4 个字节,每个字节是独立取值,通常用点分十进制的形式表示。例如,192.168.0.100。IPv4 地址范围是 0.0.0.0 ~ 255.255.255.255,最多包含 4294967296(2^32) 个 IP 地址。而 IPv6 的地址格式是八元组形式,比如 2001:0DB8::1428:57ab。本节只讨论 IPv4 地址。IPv4 地址通常划分成网络 ID和主机 ID两部分。比如:IP 地址分类划分如下:分类起始地址结束地址A0.0.0.0127.255.255.255B128.0.0.0191.255.255.255C192.0.0.0223.225.255.255D224.0.0.0239.255.255.255IP 地址分类划分缺乏灵活性,对于 A 类地址来说,网络 ID 只有 2^7 = 128 个,但是主机 ID 多达 2^24 = 16777216 个,主机 ID 浪费很大。对于 C 类地址来说,网络 ID 可以有 2^21 = 2097152 个,但是主机 ID 只有 2^8 = 256 个,对于有些组织来说主机 ID 不够划分。于是 1993 年出现了 CIDR(Classless Inter-Domain Routing)的编址策略,叫做无类别域间路路由选择。CIDR 编址是一种 IP 地址的压缩表示方式,将 IP 地址分为网络前缀和主机标识两部分,形如 A.B.C.D/L 的表示方式,L 是一个小于 32 的十进制数字,代表网络前缀占用 L 个比特,主机标识占用 32 - L 个比特。比如,200.101.80.0/20 表示网络前缀占用 20 个比特,主机标识占用 12 个比特。在 CIDR 编址方式下,如何通过 IP 地址快速确定网络 ID 呢?是通过子网掩码来确定的。对于形如 A.B.C.D/L 的子网,子网掩码是由 L 个 bit 1 和 32 - L 个 bit 0 组成的二进制数。只要把 A.B.C.D 和子网掩码做一个按位与(&)运算,就可以得到网络 ID。可以说,形如 A.B.C.D/L 的表示,可以唯一确定一个网络 ID,我们通常把 A.B.C.D/L 表示叫做网段。你可以说 A.B.C.D/L 表示了一个网段,网段就是形如 A.B.C.D/L 的表示形式。比如,200.101.80.0/20 网段的子网掩码的二进制形式是 11111111 11111111 11110000 00000000,十进制形式是 255.255.240.0。将 200.101.80.0 和 255.255.240.0 做按位与(&)运算,得到的网络 ID 是 200.101.80.0。那么 IP 地址 200.101.96.1 是 200.101.80.0/20 网段的 IP 吗?我们只需要把 200.101.96.1 和 255.255.240.0 做一个按位与(&)运算,查看结果是否等于 200.101.80.0 即可。采用 CIDR 编码方式优势如下:简单灵活有效利用 IP 地址空间减小路由表规模。比如 200.101.80.0/20 网段中的 IP 地址 200.101.80.100,如果按照分类,属于 C 类地址,网络 ID 占用 24 个 bit,主机 ID 占用 8 个 bit;如果采用 CIDR 方式,网络 ID 占用 20 个 bit,主机 ID 占用 12 个 bit。对于主机较多的网络,极大地提高了 IP 地址的利用率。
- 1.5 使用 ip 代理 对于一些比较狠的网站,会对一些爬虫的程序客户端 ip 进行封杀,这样我们至少在一段时间内无法在运行该程序去爬取网站数据。此时,我们可以使用代理 ip 去隐藏真实的请求 ip,这样又可以访问网站并爬取数据。如果这个代理 ip 被封了怎么办?那就需要有多个可用的代理 ip,一旦发现该 ip 被封,我们立马换下一个 ip 代理继续请求数据。假设我们有十万代理 ip,每个代理能支撑我们爬取 1分钟数据,那么我们至少能顺利爬取2个多月,且一般1-2天左右,原来被封的 ip 又会被解除禁封。这样,只要我们有大量的 ip 代理,我们就不怕网站的封杀,能源源不断获取相应的网站数据。那么到哪里去获取这样免费的代理 ip 呢?同样有两种途径:网络上的免费 ip 代理:免费、不稳定且大部分不可用;付费 ip 代理池:略贵、大部分稳定可用;在 github 上也有许多维护和获取免费代理服务器地址的项目,我们也可以直接使用这些免费的项目帮我们抓取并维护可用的代理 ip 池。
TCP IP相关搜索
-
tab
table
tableau
tablelayout
table样式
taif
tail
talk
tamcat
tan
target属性
task
tbody
tcl tk
TCP IP
tcp ip协议
tcpdump
tcpip
tcpip协议
tcp连接