欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

TCP/IP网络编程 TCP/IP协议栈

程序员文章站 2022-06-30 12:35:07
4应用层 (4.1)功能 (4.2)协议 基于TCP协议的应用程序 FTP(21) TELNET(23) BGP 基于UDP协议的应用程序 TFTP(69) RIP (4....

4应用层

(4.1)功能

(4.2)协议

基于TCP协议的应用程序

FTP(21)

TELNET(23)

BGP

基于UDP协议的应用程序

TFTP(69)

RIP

(4.3)其它

ping命令工作在应用层,它直接使用网络层的ICMP协议,而没有使用传输层的TCP/UDP协议。

3传输层

(3.1)功能

传输层实现端到端的服务,进行TCP的可靠数据传输和UDP的数据报传输。

(3.2)协议

TCP

UDP

SPX(序列分组交换 协议)

(3.3)硬件设备

2网络层

(2.1)功能

网络层提供点到点的服务,进行IP寻址

(2.2)协议

ICMP(Internet Control Message Protocol)控制报文协议:分组网间探测 PING(Packet InterNet Groper)是应用层直接使用网络层的ICMP协议的特殊例子。

IGMP()

IP(Internet Protocol)

ARP(Address Resolution Protocol)地址转换协议: ARP 是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

RARP(Reverse ARP)反向地址转换协议

RIP:RIP是被当作一个应用层进程(虽然它是一个能操作UNIX内核中的转发表的特殊进程)来实现的,所以它能在一个标准套接字上发送和接收报文,并且使用一个标准的传输层协议。RIP是一个运行在UDP上的应用层协议。

(2.3)硬件设备

1网路接口层

(1.1)功能

(1.2)协议

ARP

(1.3)硬件设备

其它

所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。 短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。

NAT:网络地址转换属于接入广域网 (WAN) 技术,是一种将私有(保留)地址转化为合法 IP 地址的转换技术。

地址转换解决了因特网地址短缺所面临问题;

地址转换实现了对用户透明的网络外部地址的分配;

使用地址转换后,对IP包加长,快速转发不会造成什么影响;

地址转换内部主机提供一定的“隐私”;

tcpdump 是简单可靠网络监控的实用工具

netstat 显示网络有关的信息,比如套接口使用情况、路由、接口、协议等

ifconfig 是查看活动的网卡信息

OSI七层模型

应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

表示层:TIFF、GIF、JPEG、PICT、MPEG、ASII

会话层:NFS、SQL、NETBIOS、RPC

传输层:TCP、UDP、SPX

网络层:ICMP、IGMP、IP、ARP、RARP、OSPF、IPX、RIP、IGRP

数据链路:PPP、FR、HDLC、VLAN、MAC

物理层:RJ45、CLOCK、IEEE802.3

动态路由

建立动态路由需要用到的文件/etc/gateways

ARP欺骗攻击:分为对路由器ARP表的欺骗和对内网PC的网关欺骗。 第一种ARP欺骗的原理是截获网关数据。 第二种ARP欺骗的原理是伪造网关。

重放攻击:重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(FreshnessAttacks)是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。

暴力攻击:暴力破解攻击是指攻击者通过系统地组合所有可能性(例如登录时用到的账户名、密码),尝试所有的可能性破解用户的账户名、密码等敏感信息。攻击者会经常使用自动化脚本组合出正确的用户名和密码。

DNS欺骗攻击:DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。 如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址。

负载均衡设备

四层负责均衡:是通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器与请求客户端建立TCP连接,然后发送Client请求的数据。

七层负载均衡:又称内容交换,也就是主要通过报文中真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的服务器。

Socket

Socket用于描述IP地址和端口,是一个通信链的句柄

Socket服务端的端口是固定的

Socket客户端的端口是不固定的

Linux中,一个端口能够接受TCP链接数量的理论上限是无上限。

私有地址

A类:10.0.0.0-10.255.255.255

B类:172.16.0.0-172.31.255.255

C类:192.168.0.0-192.168.255.255

DNS是将域名解析成IP地址的服务,DNS发生问题时无法通过域名访问网页,但是直接通过IP地址连接的应用程序(比如QQ)仍可以使用。

四种情况会发送RST包:

1、端口未打开

2、请求超时

3、提前关闭

4、在一个已关闭的socket上收到数据

网络安全控制技术:防火墙、入侵检测、访问控制

交换机工作在数据链路层,属于二层设备;工作在三层的路由器具备路由转发功能。

当建立连接时,下面哪一个数据包发送顺序是正确的TCP握手协议过程?SYN,ACK+SYN,ACK。

 

TCP/IP网络编程 TCP/IP协议栈

 

拓扑结构指的是(资源网络)的拓扑结构

计算机网络的拓扑结构是引用拓扑学中研究与大小、形状无关的点、线关系的方法,把网络中的计算机和通信设备抽象为一个点,把 传输介质 抽象为一条线,由点和线组成的几何图形就是计算机网络的拓扑结构。

TCP建立与关闭连接

 

TCP/IP网络编程 TCP/IP协议栈

 

介绍一下TCP连接建立与断开过程中的状态。TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用、特定数据包以及超时等,具体状态如下所示:

建立连接

LISTEN : Server 端的某个 Socket 正在监听来自远方的 TCP 端口的连接请求。

SYN_SENT :发送连接请求后等待确认信息。当客户端 Socket 进行 Connect 连接时,会首先发送 SYN 包,随即进入 SYN_SENT 状态,然后等待 Server 端发送三次握手中的第 2 个包。

SYN_RECEIVED :收到一个连接请求后回送确认信息和对等的连接请求,然后等待确认信息。通常是建立 TCP 连接的三次握手过程中的一个中间状态,表示 Server 端的 Socket 接收到来自 Client 的 SYN 包,并作出回应。 ESTABLISHED :表示连接已经建立,可以进行数据传输。

ESTABLISHED:

断开连接

FIN_WAIT_1 :主动关闭连接的一方等待对方返回 ACK 包。若 Socket 在 ESTABLISHED 状态下主动关闭连接并向对方发送 FIN 包(表示己方不再有数据需要发送),则进入 FIN_WAIT_1 状态,等待对方返回 ACK 包,此后还能读取数据,但不能发送数据。在正常情况下,无论对方处于何种状态,都应该马上返回 ACK 包,所以 FIN_WAIT_1 状态一般很难见到。

FIN_WAIT_2 :主动关闭连接的一方收到对方返回的 ACK 包后,等待对方发送 FIN 包。处于 FIN_WAIT_1 状态下的 Socket 收到了对方返回的 ACK 包后,便进入 FIN_WAIT_2 状态。由于 FIN_WAIT_2 状态下的 Socket 需要等待对方发送的 FIN 包,所有常常可以看到。若在 FIN_WAIT_1 状态下收到对方发送的同时带有 FIN 和 ACK 的包时,则直接进入 TIME_WAIT 状态,无须经过 FIN_WAIT_2 状态。

TIME_WAIT :主动关闭连接的一方收到对方发送的 FIN 包后返回 ACK 包(表示对方也不再有数据需要发送,此后不能再读取或发送数据),然后等待足够长的时间( 2MSL )以确保对方接收到 ACK 包(考虑到丢失 ACK 包的可能和迷路重复数据包的影响),最后回到 CLOSED 状态,释放网络资源。

CLOSED :初始状态,表示没有任何连接。

CLOSE_WAIT :表示被动关闭连接的一方在等待关闭连接。当收到对方发送的 FIN 包后(表示对方不再有数据需要发送),相应的返回 ACK 包,然后进入 CLOSE_WAIT 状态。在该状态下,若己方还有数据未发送,则可以继续向对方进行发送,但不能再读取数据,直到数据发送完毕。

LAST_ACK :被动关闭连接的一方在 CLOSE_WAIT 状态下完成数据的发送后便可向对方发送 FIN 包(表示己方不再有数据需要发送),然后等待对方返回 ACK 包。收到 ACK 包后便回到 CLOSED 状态,释放网络资源。

CLOSED :初始状态,表示没有任何连接。

例外

CLOSING :比较罕见的例外状态。正常情况下,发送 FIN 包后应该先收到(或同时收到)对方的 ACK 包,再收到对方的 FIN 包,而 CLOSING 状态表示发送 FIN 包后并没有收到对方的 ACK 包,却已收到了对方的 FIN 包。有两种情况可能导致这种状态:其一,如果双方几乎在同时关闭连接,那么就可能出现双方同时发送 FIN 包的情况;其二,如果 ACK 包丢失而对方的 FIN 包很快发出,也会出现 FIN 先于 ACK 到达。

当我们在局域网内使用ping www.nowcoder.com时,使用了哪些协议?

1、首先将域名转换为IP地址,用到了应用层的DNS协议,注意到DNS使用的传输层协议是UDP而不是TCP。

2、接着是使用ping命令检测网络是否是通的,主机是否可达、路由是否可用,这个时候需要从底层物理层向上到网络层;

3、链路层使用的是MAC地址,所以需要根据ARP协议把IP地址转换为MAC地址,从而把命令从链路层传输到网络层。

4、在网络层ping功能发送一个ICMP请求给目标主机,来等待ICMP应答。

所以整个过程并没有用到TCP协议!

TCP报文首部与关闭连接有关的是ACK和FIN

URG:URG=1时,表明紧急指针字段有效,告诉系统有紧急字段需要立即传送。

ACK:ACK=1时确认号才有效,ACK=0时,确认号无效。TCP规定在连接建立之后所有传送的报文都必须吧ACK置1.

RST:RST=1时表示TCP连接出现严重差错,必须释放连接再重新建立连接。

FIN:FIN=1表示要求释放连接。