图解TCP/IP读书笔记(二)

来源:互联网 发布:大连磐海数据有限公司 编辑:程序博客网 时间:2024/06/05 08:20
1.TCP/IP的心脏是互联网层。这一层主要由IP(Internet Protocol)和ICMP(Internet Control Message Protocol)两个协议组成。
2.IP相当于OSI参考模型的第3层——网络层。网络层的主要作用是“实现终端节点之间的通信”,也叫“点对点通信”
3.主机:配置有IP地址,但是不进行路由控制的设备。既配有IP地址又具有路由控制能力的设备叫做“路由器”。
4.节点:主机和路由器的统称
5.IP大致分为三大作用模块:IP寻址、路由(最终节点为止的转发)以及IP分包与组包。
6.MAC地址是用来标识同一个链路中不同计算机的一种识别码。
7.在TCP/IP通信中所有主机或路由器必须设定自己的IP地址。
8.在网桥或交换集线器等物理层或数据链路层数据包转发设备中,不需要设置IP地址。因为这些设备只负责将IP包转化为0、1比特流转发或对数据链路帧的数据部分进行转发,而不需要应对IP协议。
9.路由控制(Routing):指将分组数据发送到最终目标地址的功能。

10.一跳(1 Hop)是指利用数据链路层以下分层的功能传输数据帧的一个区间。
11.多跳路由是指路由器或主机在转发IP数据包时只指定下一个路由器或主机,而不是将到最终目标地址为止的所有通路全部指定出来。
12.路由控制表:记录IP数据在下一步应该发给哪个路由器。
13.IP面向无连接。即在发包之前,不需要建立与对端目标地址之间的连接。上层如果遇到需要发送给IP的数据,该数据会立即被压缩成IP包发送出去。
14.面向无连接的情况下,即使对端主机关机或不存在,数据包还是会被发送出去。反之,对于一台主机来说,它会何时从哪里接收到数据也是不得而知的。IP数据包在途中可能会发生丢包、错位以及数据量翻倍等问题。
15.为了提高可靠性,上一层的TCP采用面向有连接型。
16.在用TCP/IP通信时,用IP地址识别主机和路由器。
17.IP地址(IPv4地址)由32位正整数来表示。IP地址在计算机内部以二进制方式被处理。
18.IP地址由“网络标识(网络地址)”和“主机标识(主机地址)”两部分组成。
19.IP地址分为四个级别,A/B/C/D类,它根据IP地址中从第1位到第4位的比特列对其网络标识和主机标识进行区分。
20.多播用于将包发送给特定组内的所有主机。由于其直接使用IP协议,因此也不存在可靠传输。
21.TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输,总之,根据通信的具体特征,选择合适的传输层协议是非常重要的。
22.TCP是面向连接的、可靠的流协议。流就是指不间断的数据结构,可以将其想象成排水管道中的水流。
23.数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同一链路中不同的 计算机,后者用来识别TCP/IP网络中互连的主机和路由器。
24.在传输层中也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。
25.通过IP地址、端口号、协议号进行通信识别
26.TCP/IP或UDP/IP通信中通常采用5个信息来识别一个通信。——源IP地址、目标IP地址、协议号、源端口号、目标端口号。只要其中某一项不同,则被认为是其他通信。
27.在实际进行通信时,要事先确定端口号。两种方法:标准既定的端口号、时序分配法。“知名端口号”一般由0到1023的数字分配而成。应用程序应该避免使用知名端口号进行既定目的之外的通信,以免产生冲突。
28.时序分配法:
29.端口号由其使用的传输协议决定。因此,不同的传输协议可以使用相同的端口号。
30.UDP:User Datagram Protocol
31.UDP是一种没有复杂控制,提供面向无连接通信服务的一种协议。它将部分控制转移给应用程序去处理,自己却只提供作为传输层协议的最基本功能。
32.TCP,可以说是对“传输、发送、通信”进行“控制”的“协议”。
33.tcp充分是实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
34.连接是指各种设备、线路,或网络中进行通信的两个应用程序为了相互传递消息而专有的、虚拟的通信线路,也叫做虚拟电路。
35.TCP则负责控制连接的建立、断开、、保持等管理工作
36.数据破坏、丢包、重复以及分片顺序混乱等问题
37.TCP通过检验和、徐利好、确认应答、重发控制、连接管理以及窗口控制等机制可靠性传输。
38.TCP通过肯定的确认应答(ACK)实现可靠的数据传输。
39.重发超时是指梓安重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过了这个时间仍未收到确认应答,发送端将进行数据重发。
40.TCP提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好通信两端之间的准备工作。UDP是一种面向无连接的通信协议,因此不检查对端是否可以通信,直接将UDP包发送出去。
41.TCP与此相反,它会在疏忽通信之前,通过TCP首部发送一个SYN包作为建立连接的请求等待确认应答。如果对端发来确认应答,则认为可以进行数据通信。如果对端的确认应答未能到达,就不会进行数据通信。此外,在通信结束时会进行断开连接的处理(FIN包)
42.建立一个TCP连接需要发送3个包。这个过程也称作“三次握手”
43.可以使用TCP首部用于控制的字段来管理TCP连接。一个连接建立与断开,正常过程至少需要来回发送7个包才能完成。
44.在建立tcp连接的同事,也可以确定发送数据包的单位,也可以称其为“最大消息长度(MSS:Maximum Segment Size)”。最理想的情况是,最大消息长度正好是IP中不会被分片处理的最大数据长度。
45.socket是一种操作系统提供的进程间通信机制。在操作系统中,通常回味应用程序提供一组应用程序接口,称为套接字接口(socket API)。应用程序可以通过套接字接口,来使用网络套接字,以进行数据交换。
46.在套接字接口中,以IP地址及通信端口组成套接字地址(socket address).远程的套接字地址,以及本地的套接字地址完成连接后,再加上使用的协议(protocol),这个五元组(five-evlement tuple),称为套接字对(socket pairs),之后就可以彼此交换数据。
47.操作系统根据套接字地址,可以决定将数据送达特定的进程或线程。
48.服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket

服务器为socket绑定ip地址和端口号

服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开

客户端创建socket

客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket

服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求

客户端连接成功,向服务器发送连接状态信息

服务器accept方法返回,连接成功

客户端向socket写入信息

服务器读取信息

客户端关闭

服务器端关闭

49.“三次握手”:
第一次握手:客户端尝试连接服务器,向服务器发送syn包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入SYN_SEND状态等待服务器确认

第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态

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

定睛一看,服务器socket与客户端socket建立连接的部分其实就是大名鼎鼎的三次握手

50.TCP:Transmission Control Protocol,传输控制协议
51.IP:Internet Protocol,网间协议

52.TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中

应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等

传输层:TCP,UDP

网络层:IP,ICMP,OSPF,EIGRP,IGMP

数据链路层:SLIP,CSLIP,PPP,MTU

53.TCP以1个段为单位,每发一个段进行一次确认应答的处理。这样的传输方式有一个缺点。那就是,包的往返时间越长通信性能就越低。为了解决此问题,TCP引入了窗口这个概念。即使在往返时间较长的情况下,它也能控制网络性能的下降。确认应答不再是以每个分段,而是以更大的单位进行确认时,转发试讲将会被大幅度的缩短。也就是说,发送端主机,在发送了一个段以后不必要一直等待确认应答,而是继续发送。
54.窗口大小就是指无需确认应答而可以继续发送数据的最大值。这个机制实现了使用大量的缓冲区,通过对多个段同时进行确认应答的功能。
55.缓冲区(Buffer)在此处表示临时保存收发数据的场所,通常是在计算机内存中开辟的一部分空间。
56.窗口在一定程度上较大时,即时有少部分的确认应答丢失也不会进行数据重发。可以通过下一个确认应答进行确认。
57.TCP与UDP的校验和更是一种进行路由器内存故障或程序漏洞导致的数据是否被破坏的检查。
58.TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。
59.TCP是面向连接的、可靠的流协议。流就是不间断的数据结构。
60.TCP为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。
61.UDP是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在UDP的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时候会根据自己的需要进行重发处理。
62.应用程序利用套接字,可以设置对端的IP地址、端口号,并实现数据的发送与接收。
63.IP数据包犹如包裹,而送货车犹如数据链路。包裹不可能自己移动,必须有送货车承载转运。而一辆送货车只能将包裹送到某个区间范围内。每个不同的区间的包裹将由对应的送货车承载、运输。IP的工作原理也是如此。
64.为了将数据包发送给目标主机,所有主机都维护着一张路由控制表(Routing Table).该表记录IP数据在下一步应该发给哪个路由器。IP包将根据这个路由表在各个数据链路上传输。
65.IP是实现多个数据链路之间的通信的协议。数据链路根据种类的不同各有特点。对这些不同数据链路的相异特性进行抽象化也是IP的重要作用之一。数据链路的地址可以被抽象化为IP地址。
66.IP面向无连接。(一是为了简化,二是为了提速)上层如果遇到需要发送给IP的数据,改数据会立即被压缩成IP包发送出去。
67.实现IP通信的主机和路由器都必须持有路由控制表。路由控制表的形成方式有两种:一种是管理员手动设置,另一种是路由器与其他路由器相互交换信息时自动刷新。前者叫静态路由控制,后者叫动态路由控制。
68.IP协议始终认为路由控制表是正确的,然而,IP本身并没有定义制作路由控制表的协议。即IP没有制作路由控制表的机制。该表是由“路由协议”制作的。
69.路由控制表中记录着网络地址与下一步应该发送至路由器的地址。
70.默认路由:路由表中任何一个地址都能与之匹配的记录。
71.路由表越大,管理它所需要的内存和CPU也就越多。并且查找路由表的时间也会越长,导致转发IP数据包的性能下降。
72.回环地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。计算机使用127.0.0.1作为回环地址。使用这个IP或localhost主机名时,数据包不会流向网络。
73.路由控制表中记录着网络地址与下一步应该发送至路由器的地址。
74.如果路由控制表中存在多条相同网络地址的记录,就选择一个最为吻合的网络地址。(指相同位数最多的意思,也叫做最长匹配)
75.利用网络地址的比特分布可以有效的进行分层配置。对内即使有多个子网掩码,对外呈现的也是同一个网络地址。通过路由信息的聚合可以有效的减少路由表的条目。
76.每种数据链路的最大传输单元(MTU)都不尽相同。因为每个不同类型数据链路的使用目的不同。
78.任何一台主机都有必要对IP分片(IP  Fragmentation)进行相应的处理。分片往往在网络上遇到比较大的报文无法一下子发送出去时才会进行处理。
79.经过分片之后的IP数据报在被重组的时候,只能由目标主机进行。路由器虽然做分片但不会进行重组。
80.在目标主机上进行分片的重组时,可能有一部分包会延迟到达。因此,一般会从第一个数据报的分片到达的那一刻起等待约30秒再进行处理。
81.分片机制会加重路由器的处理负荷。在分片处理中,一旦某个分片丢失,会造成整个IP数据报作废。
82.路径MTU(Path MTU):指从发送端主机到接收端主机之间不需要分片时最大MTU的大小。即路径中存在的所有数据链路中最小的MTU.




















原创粉丝点击