linux网络编程 TCP/IP简述

来源:互联网 发布:公司网管必备软件 编辑:程序博客网 时间:2024/06/06 07:06

IP协议介绍:

网际层的IP协议是TCP/IP体系中的核心协议,他提供无连接的传输服务,不能保证数据报的可靠传输。

IP数据报的完整格式如下:

版本:4位 ,如果创建该数据报的IP协议的版本信息,如果版本是4,对应是IPv4

首部长度:除了IP选型及及相关的填充字段以外,首部所有字段的长度都是固定的,当IP的首部长度不是4字节的整数倍时,必须利用最后一个填充字段加以填充,当首部不含选项和填充时,长度为20字节。

总长度:16位,总长度是首部和数据之和的长度,因其16位的限制,所以一个数据报最长为65536(2的16次方)字节。

标识(16位),标志(3位),段偏移量(13位)这3个字段用于控制IP数据报的分片和重组。

寿命(8位) TTL (Time To Live)又称生存时间,该字段设置了改数据报文在互联网系统中允许存在的时间,以秒为单位

协议(8位)指出此数据报携带的运输层数据使用的是何种协议,YCP的保留值为6,UDP的保留值为17,ICMP的保留值为1

首部校验和(16位)用于保证首部数据的完整性,确保报头在传输过程中不被改变,发现校验和出错时,对数据报不做任何处理,立即丢弃

源IP地址(32位),目的IP地址(32位):包含了数据报文的发送方和接收方的IP地址,数据报文可能经过许多中间路由器,但这2个字段始终不变,它们指定了源站和目的站的IP地址

数据字段说明了数据报文的数据区的开始,IP选项字段的长度是可变的,填充字段取决于所选的项。

服务类型(8位):用来获得更好的服务,其中前3个比特表示优先级,第4个比特表示要求有更低的时延,第5个比特表示有更高的吞吐量,第6个比特要求有更高的可靠性,第7个比特表示选择费用更廉价的路由,最有一个目前尚未使用


IP地址就是给每个链接在Internet上的主机分配的一个全世界唯一的32位的标识符,他标识着一个主机的位置

ABC 类的IP地址都是由 网络号和主机号2部分组成,前者表示属于哪个网络,后者表示哪个主机

子网掩码:一个网络中的主机很多且分布在很大的地理范围的时候,为了便于对主机的管理,可以将一个网络中的主机划分为若干个子网,用IP地址中的主机号字段中的前若干位作为“子网号字段”,后面的仍然作为主机号字段,TCP/IP体系中规定用一个32位idea子网掩码来表示子网号字段的长度


TCP协议介绍:

TCP是TCP/IP体系中的运输层协议,他可以保证数据的可靠的传输。

TCP协议的数据包格式如下:

源端口和目的端口(各占16位):源主机和目的主机的端口号

序号:用来表示从TCP发送端想TCP接受端发送的数据字节流,负责在数据报的排序重组时起作用

确认号:主机期望收到的对方下一次发送数据的第一个字节的序号

首部长度:表示首部总长度

码元比特:分为6个标志

分别为:

            URG 发送紧急数据

           ACK   指出确认字段是否有效

            PSH 接受方应该尽快将这个报文提交给应用层

            RET 重建连接

            SYN 同步序号用来请求连接

            FIN  用来释放连接

窗口:用来自定缓冲区大小,通告每次发送一个 报文段希望接受多少数据。


TCP的链接与终止:

提要:计算机的TCP链接中会引起进程的阻塞,简单理解就是暂停,所以在运行网络的程序的时候就可以理解listen之后为何accept没有被立即执行,而是等到客户端有了连接之后才被执行。


TCP连接的建立:

TCP是面向连接的协议,TCP连接eider建立和释放是每一个通信中必不可少的过程,链接的建立需要经过3次数据传输,如上图

具体建立的步骤说明如下:

1:服务器必须已经准备好接受客户的连接请求,这通过调用socket .bin 和listen函数来完成,客户端通过调用connect函数进行主动打开,者应期客户端发送一个SYN分节到服务器端

2:服务器端收到客户端发来的SYN分节后,必须发送ACK对其进行确认,同时方一个自己的SYN分节给客户端,表示接受客户端建立连接的请求

3:客户端发送ACK确认服务器的SYN,连接建立成功


TCP连接的中止:

具体步骤:

(1)客户端应用进程调用close,调用close的结果就是发送一个FIN分节主动挂壁连接。

(2)服务收到FIN后执行被动关闭,发送ACK对客户端的FIN进行确认

(3)当服务器将待发的数据发送完后,调用close关闭它的套接字,这导致他的TCP发送一个FIN分节给客户端

(4)接受到服务器的FIN分节后,对其发送一个ACK确认分节,当前的链接被彻底关闭


UDP协议:

用户数据报协议UDP是面向无连接的服务,提供不可靠的数据服务,一个UDP客户端可以只创建一个套接字向不同客户端发送数据报


端口号:

系统中有很多进程,允许同时存在多条进程使用TCP和UDP协议,而这些调用协议的进程都是通过端口号来区别的,当一个客户端与服务器通信的时候,服务器需要将自己链接到一个端口上等待客户端的连接
0 0
原创粉丝点击