TCP/IP协议

作者: HeartGo | 来源:发表于2017-08-06 20:12 被阅读71次

TCP/IP协议

TCP/IP协议概述

TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
链路接口层:接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

TCP/IP层次结构图 .png

网络层协议(IP协议)

IP协议是网络层的主要协议,是Internet最重要的协议。在IP协议中规定了在Internet上进行通信时应遵守的规则。例如IP数据包的组成、路由器如何将IP数据包送到目的主机等。IP协议在主机和网络之间寻址和路由数据包。IP是一个无连接的协议,主要负责在主机间寻址并为数据包设定路由,在交换数据前它并不建立会话。因为它不保证正确传递。另一方面,数据在被收到时,IP不需要收到确认,所以它是不可靠的。
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层——TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
IP协议的数据格式如下:


网际协议IP数据格式.png

版本号:协议的版本号,不同版本的协议格式或语言可能不同,现在常用的是IPV4。
生存时间(Time To Live,TTL):8bit,即IP分组在IP网络中的寿命。
协议(Protocol):8bit,指明IP分组中数据字段携带的是哪种高层协议的数据。
首部检查和(header checksum):16bit。此字段只用于检查IP分组的首部,不包括数据字段。
源IP地址(source IP address):32bit,填入源主机的IP地址。
目标IP地址(destination IP address):32bit,填入目标主机的IP地址。
可选字段(IP options):可选,可变长,1字节-40字节,但加上填充字段(填充0)后两个字段长度必须为4Bytes的整数倍。
IP地址标识着网络中一个系统的位置。我们知道每个IP地址都是由两部分组成的:网络号和主机号。其中网络号标识一个物理的网络,同一个网络上所有主机需要同一个网络号,该号在互联网中是唯一的;而主机号确定网络中的一个工作端、服务器、路由器及其它TCP/IP客户端。对于同一个网络号来说,主机号是唯一的。每个TCP/IP主机由一个逻辑IP地址确定。

传输层协议(TCP和UDP)

1.TCP协议
传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议,由IETF的RFC 793说明。它在传送数据时是分段进行的,主机交换数据必须建立一个会话。它用比特流通信,即数据被作为无结构的字节流。通过每个TCP传输的字段指定顺序号,以获得可靠性。如果一个分段被分解成几个小段,接收主机会知道是否所有小段都已收到。通过发送应答,用以确认别的主机收到了数据。对于发送的每一个小段,接收主机必须在一个指定的时间返回一个确认。如果发送者未收到确认,数据会被重新发送;如果收到的数据段损坏,接收主机会舍弃它,因为确认未被发送,发送者会重新发送分段。TCP端口为信息的传送指定端口,端口号小于256的定义为常用端口。
下图展示了TCP首部的数据格式。如果不计任选(Options)字段,那么,它的大小是20个字节。


TCP包头格式.png

TCP协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-way handshake),过程如下图所示。
(1)客户机向服务器发送一个TCP数据包,表示请求建立连接。
(2)服务器收到了数据包,知道这是一个建立请求的连接,服务器也通过发回具有以下项目的数据包表示回复:同步标志置位、即将发送的数据段的起始字节的顺序号、应答并带有将收到的下一个数据段的字节顺序号。
(3)客户机收到了服务器的TCP,知道是从服务器来的确认信息。于是客户机也向服务器发送确认信息。至此客户端完成连接。
(4)服务器收到确认信息,也完成连接。


TCP建立连接(三次握手) .png

TCP协议建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。


TCP断开连接 .png

2.UDP协议
UDP 是User Datagram Protocol的简称,中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
用户数据报协议UDP提供了无连接的数据报服务。它适用于无须应答并且通常一次只传送少量数据的应用软件。

Socket编程

Socket简介

Socket接口是TCP/IP网络的API。Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学习Internet上的TCP/IP网络编程,必须理解Socket接口。   
Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket (SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。

Socket创建

为了创建Socket,程序可以调用Socket函数,该函数返回一个类似于文件描述符的句柄。socket函数原型为:

ServerSocket serverSocket = null;
     int port = 8080;
     try {
     //服务器套接字对象
     serverSocket = new ServerSocket(port, 1, InetAddress.getByName("127.0.0.1"));
     } catch (IOException e) {
     e.printStackTrace();
     System.exit(1);
     } 

Socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用Socket函数时,socket执行体将建立一个Socket,实际上"建立一个Socket"意味着为一个Socket数据结构分配存储空间。Socket执行体为你管理描述符表。
两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。

Socket配置

通过socket调用返回一个socket描述符后,在使用socket进行网络传输以前,必须配置该socket。面向连接的socket客户端通过调用Connect函数在socket数据结构中保存本地和远端信息。无连接socket的客户端和服务端以及面向连接socket的服务端通过调用 bind函数来配置本地信息。

相关文章

  • TCP协议

    TCP/IP协议分层详解TCP/IP协议详解通俗易懂网络协议(TCP/IP概述)什么是TCP/IP协议?

  • TCP/IP协议

    一、关于TCP/IP TCP/IP协议是一个协议集合,HTTP协议,IP协议,TCP协议,DNS协议等都属于TCP...

  • 关于网络基础知识TCP/IP(三)

    四、掌握TCP/IP协议:TCP/IP3次握手 4.1 IP协议是TCP/IP协议中最重要的协议,它为TCP UD...

  • TCP HTTPS专题

    TCP HTTPS专题 TCP协议 TCP/IP协议分层 TCP/IP 协议族里重要的一点就是分层。 TCP/IP...

  • (二)TCP/IP四层模型

    1、基本介绍 TCP/IP协议,也称TCP/IP协议族或TCP/IP协议栈,其中: TCP:Transmissio...

  • TCP/IP 网络协议 简记

    参考文档TCP/IP网络协议TCP/IP 协议 **************************** 常见协议...

  • 详解TCP与UDP协议

    TCP/IP协议 首先弄清楚,TCP协议和UCP协议与TCP/IP协议的联系。 TCP/IP协议是一个协议簇。里面...

  • TCP/UDP、IP 、Socket、HTTP笔记

    1.1 TCP/IP协议组 TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成 IP层负责...

  • TCP/IP、TCP、UDP

    一、TCP/IP协议 TCP/IP协议是一个协议簇。其中包括UDP、TCP、IP等协议。之所以命名为TCP/IP协...

  • 《图解HTTP》

    网络基础TCP/IPTCP/IP协议族说法一:TCP/IP是指TCP和IP两种协议说法二:TCP/IP是在IP协议...

网友评论

    本文标题:TCP/IP协议

    本文链接:https://www.haomeiwen.com/subject/nssnlxtx.html