TCP/IP简介

1.基本概念

Internet是基于传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)协议族的。TCP/IP协议族分为5层:应用层、传输层、网际层、数据链路层和物理层。与OSI协议族不同的是,TCP/IP协议族中没有表示层和会话层,下图显示了TCP/IP协议族的不同层及其协议:
在这里插入图片描述
注意,TCP/IP协议族中没有表示层和会话层,但为了与OSI模型进行比较,显示了这些层。下面来看看这些层的意义,如下图所示:
在这里插入图片描述
应用层最初生成的数据单元(由电子邮件、Web浏览器之类的应用程序生成)称为消息。传输层将消息分成数据段。TCP/IP的传输包含两个协议:TCP(传输控制协议)和UDP(用户数据报文协议)。传输层在数据段中增加自己的头,并将其交给网络层。网络层在数据段中增加IP头,并将结果交给数据链路层。数据链路层增加数据帧头,并将其交给物理层传输。在物理层,用电压脉冲传输实际数据位。在目标端则发生相反的过程,每个层删除上一层的头,最终由应用层接收原消息。

2.TCP数据段格式

增加头之后,TCP数据段如下图所示:
在这里插入图片描述
可以看出TCP数据段的头为20~60字节,其后是实际数据。如果TCP数据段不包含任何选项,则头为20字节,否则头为60字节,也就是说,选项最多使用40字节,可以用选项向目的地传达其他信息。下面简要介绍TCP段头的各个字段:
1.源端口号(Source port number):2字节数字,表示源计算机的端口号,对应于发送这个TCP段的应用程序。
2.目标端口号(Destination port number):2字节数字,表示目标计算机的端口号,对应于接收这个TCP段应用程序。
3.序号(Sequence number):4字节字段,定义这个TCP段中数据部分第一个字节的编号。TCP是面向连接的协议,为了保证正确送达,从源向目标传输的每个字节安递增顺序编号。序号字段告诉目标主机,这个序列中的哪个字节是这个TCP段中数据部分的第一个字节,在TCP连接建立阶段,源和目标生成不同的唯一随机数。
4.确认号(Acknowledgement number):如果目标主机正确收到序号为X的段,则它向源返回确认号X+1。因此,这4个字节定义源是在正确发送后从目的地接收的序号。
5.头长度(Header length):4位字段,指定TCP头中的四字节字段。
6.保留(Reserved):6位字段,保留将来使用。
7.标志(Flag):6位字段,定义6中不同的控制标志,各占一位。分别为:(1)紧急URG:当等于1时,表明紧急指针字段有效;(2)确认ACK:仅当ACK等于1时确认号字段才有效,否则无效,TCP规定,在连接建立后所有的传送的报名都必须把ACK置1;(3)推送 PSH,当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应。在这种情况下,TCP就可以使用推送(push)操作。这时,发送方TCP把PSH置为1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地交付接收应用进程。而不用再等到整个缓存都填满了后再向上交付;(4) 复位RST:当RST=1时,表明TCP连接中出现了严重错误,必须释放连接,然后再重新建立传输连接。RST置为1还用来拒绝一个非法的报文段或拒绝打开一个连接;(5) 同步SYN:在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1,因此SYN置为1就表示这是一个连接请求或连接接受报文;(6)终止FIN:用来释放一个连接。当FIN=1时,表明此报文段的发送发的数据已发送完毕,并要求释放运输连接。
8.窗口大小(Window size):这个字段确定对方要维护的滑动窗口大小。
9.校验和(Checksum):2字节字段,包含校验和,用于错误检测和纠错。
10.紧急指针(Urgent pointer):这个字段在TCP段中的数据比同一TCP连接中的其他数据更重要或更紧急时使用。

3.IP数据报文格式

TCP头加进原消息,传递到IP层。IP层把TCP头加上原消息看成是自己的原始消息,在其前面增加自己的头,从而生成IP数据报文,下图显示了IP数据报文的格式:
在这里插入图片描述
IP数据报文是长度可变的数据报文,消息可以分解为多个数据报文。一个数据报文最多可以包含65536字节。数据报文包括两大部分:头和数据。头包括20~60字节,包含路由与发送信息。数据部分包含要向接收方发送的实际数据。头类似于一个信封:其中包含关于数据的信息。数据相当于信封中的信。下面简要介绍数据报文中的各个字段:
1.版本(Version):这个字段目前的值为4,表示IP
version 4(IPv4),今后的字段值将在IP version 6(IPv6)成为标准时变成6。
2.头长度(Header Lengh,HLEN):表示多个四字节字长度。
3.服务类型(Service type): 这个字段定义服务参数,如数据报文优先级和所要求的可靠性水平。
4.总长度(Total length):这个字段包含IP数据报文的总长度。
5.标识(Identification):这个字段在数据报文分块时使用。数据报文经过不同网络时,可能根据基础网络的物理数据报文长度要求分解为更小的小数据报文,这些小数据报文用标识字段编列顺序,以便由此构造原先的数据报文。
6.标志(Flag):这个字段对应于标识字段,表示数据报文可否分段。如果可以分段,指定它是第一、最后或中间段,等等。
7.分段偏移量(Fragmentation offset):如果数据报文分段,则这个字段有用。它是一个指件,表示分段之前在原数据报文中数据的偏移量,以便由这些字段构造原先的数据报文。
8.生存时间(Time to live):当数据报文通过路由器时,将这个字段的值递减。当该值变成哦或者负数时,立即丢弃这个数据报文,不在将其转发到下一跳。这样就可以避免数据报文在不同路由器之间无穷传输,从而避免网络拥塞。当其他所有数据报文都到达目的地之后,目的地的TCP协议将会发现这个缺失的数据报文,并请求重传。
9.协议(Protocol):这个字段标识IP之上运行的传输协议,从数据段构成数据报文后,要把它传递给上一层。这个协议可能是TCP或UDP。这个字段指定数据报文要传递给目的地结点的哪个软件。
10.源地址(Source address):这个字段包含放松方的32位IP地址。
11.目的地地址(Destination address):这个字段包含最终目的地的32位IP地址。
12.可选项(Options):这个字段包含一些可选信息,如路由细节、计时信息、管理信息以及对齐方式。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhInen丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值