`
躁动的绵羊
  • 浏览: 95948 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

TCP/IP协议概念

 

TCP/IPTransmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的

 

TCP/IP的分层

 

应用层:计算机应用程序沟通的层。如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)、超文本传输协议(HTTP)等

 

传输层:它提供了节点间的数据传送,应用程序之间的通信服务,主要功能包括数据格式化、传送数据的确认以及错误数据的重传,要传送的数据以及文件会在该层被拆分成更小的包,然后传递到下一层进行传输。而接收端的应用层会将接收到得数据包进行组装,还原为原始数据或文件。该层包含的协议有传输控制协议(TCP)、用户数据报协议(UDP)等。

 

网络层:负责对传输层拆分的数据包进行封装,形成一个个IP数据包,IP数据包里描述了数据到达目的主机的路径,如经过哪些路由等等。所以,网络层的主要作用就是根据传输层拆分的数据包信息,来选择传递过程中合适的路由,每个包最终到达目标地址的路由都有可能不同

 

网络接口层:接收来自网络层的IP数据包,在网络上进行传输。主要处理的工作包括规定如何将IP数据包转化为网络硬件可传送的样式(数据帧),并从一个网络接口传到下一个网络接口。

 

TCP的三次握手

 

第一次握手:客户端发送syn(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYNack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

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

 

TCPUDP区别

 

要清楚TCPUDP的区别,首先要明白传输层的作用:在传递数据时,我们可以通过该层协议来控制一些数据传递的规则,比如说怎么对数据进行格式化、传递的数据是否需要等到目标主机的确认以及数据传送过程中出现异常,是否需要重新传送等等。

 

知道传输层作用后,我们可以分析出TCPUDP的区别:

     1. TCP是面向连接的传输控制协议(具体看TCP的三次握手),而UDP提供的是无连接的数据包服务;

2. 为确保正确地接收数据,TCP要求在目标计算机成功收到数据时发回一个确(即 ACK)。如果在某个时限内未收到相应的 ACK,将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。而UDP则无以上描述的功能,所以可能会出现丢失、重复、乱序等现象; 

基于以上UDP和TCP的特点,可在实际的场景中选择合适的协议,如:

 

 1). 类似于图像、声音等对可靠性要求不是很高的业务,可以采用UDP协议,它们对

      准确性要求不高,但要求传输速度快;

 2). 而类似于文本、文件、程序的传输对传输的可靠性要求比较高,则最好使用TCP

      协议。

 

HTTP协议

 

HTTP协议是什么?简单来说,就是一个基于应用层的通信规范:双方要进行通信,大家都要遵守一个规范,这个规范就是HTTP协议

 

HTTP协议能做什么?很多人首先一定会想到:浏览网页。没错,浏览网页是HTTP的主要应用,但是这并不代表HTTP就只能应用于网页的浏览。HTTP是一种协议,只要通信的双方都遵守这个协议,HTTP就能有用武之地。比如咱们常用的QQ,迅雷这些软件,都会使用HTTP协议(还包括其他的协议)

HTTP的一些协议规则的描述文章

http://yyyyy5101.iteye.com/blog/570768

HTTP的一些协议规则的描述文章:

http://shipmaster.iteye.com/blog/747875

HTTP缓存的一些原理:

http://hi.baidu.com/jackywdx/blog/item/48936afaffcd659358ee9011.html

robbinHTTP缓存

http://www.iteye.com/topic/462476

 

SOCKET

 

套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

 

应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

 

    所以,我的理解是:SOCKET只是个接口,是用来选择传输层的协议(TCPUDP)来进行数据传输的接口。所以有些人拿SOCKETHTTP来比较,我都不明白是怎么想的

 

 

 

 

 

 

 

2
0
分享到:
评论

相关推荐

    基于TCP/IP协议的Socket编程

    Java实现的Socket编程是基于TCP/IP协议的,它提供了一个可靠的数据流服务,可以实现客户端和服务器之间的数据交换。Java中的Socket类和ServerSocket类是两种基本的套接字类,Socket类用于建立客户端和服务器之间的...

    基于TCP/IP的socket编程

    在TCP/IP环境中,socket接口提供了创建、配置、连接和通信的API。 服务器端编程通常包括以下步骤: 1. 创建socket:使用socket()函数创建一个socket对象。 2. 绑定:使用bind()函数将socket与特定的IP地址和端口号...

    Can't create TCP/IP socket(24).原因及解决办法

    标题中的“Can't create TCP/IP socket(24)”是一个典型的错误信息,表示在尝试创建TCP/IP套接字时遇到了问题,错误代码为24。在Linux或Unix系统中,错误代码24通常与"Too many open files"相关,意味着当前进程已经...

    Java+TCP/IP+Socket编程++原书第2版.pdf

    TCP/IP和Socket编程的一个重要概念是异常处理。网络通信可能出现各种问题,如连接失败、数据传输错误等,因此必须对可能出现的异常进行捕获和处理。此外,还要注意资源的及时释放,避免内存泄漏。 总的来说,《Java...

    C# TCP/IP通信小例子

    C#是一种广泛用于构建桌面和Web应用程序的编程语言,它提供了强大的网络编程能力,其中包括TCP/IP协议的支持。本示例"**C# TCP/IP通信小例子**"是一个基础教程,旨在帮助新手理解如何在C#中实现TCP/IP通信。 TCP...

    Socket服务端客户端以tcp/ip协议发送接收报文

    本教程将详细讲解如何利用Java Socket实现基于TCP/IP的服务端和客户端之间的报文发送与接收。 TCP(传输控制协议)是一种面向连接、可靠的传输协议,它确保了数据包的有序和无损传输。IP(互联网协议)则是互联网上...

    TCP/IP,socket总结

    ### TCP/IP与Socket总结 #### 一、TCP/IP概述 **TCP/IP**(Transmission Control Protocol/Internet Protocol)是一组用于互联网及其相关网络的基础协议。它由一系列协议组成,旨在为不同类型的计算机网络提供通用...

    基于TCP/IP的Socket多线程通信(服务器和客户端)

    本主题将深入探讨基于TCP/IP的Socket如何实现多线程通信,包括服务器端和客户端的设计与实现。 1. **TCP/IP协议**:传输控制协议/互联网协议(TCP/IP)是互联网上广泛使用的通信协议标准。TCP负责数据的可靠传输,...

    TCP/IP详解

    在第二卷中,Stevens更深入地探讨了TCP/IP协议在实际系统中的实现细节,包括Unix系统的网络编程接口(如socket API)和网络管理工具。这部分内容涵盖了网络编程的基本概念,如套接字编程,以及TCP、UDP和IP的实现...

    java TCP/IP socket 编程(原书第2版)pdf+源码

    Java TCP/IP Socket编程是Java网络通信的核心技术,广泛应用于服务器端和客户端之间的数据传输。这本书的第二版深入探讨了如何使用Java实现TCP/IP协议栈的socket接口,为开发者提供了全面的理论知识和实践指导。 ...

    tcp/ip聊天室.rar

    综上所述,"tcp/ip聊天室.rar" 包含了一个使用TCP/IP进行通信,通过socket编程实现连接,利用多线程处理并发连接,以及借助Linux(Ubuntu)和MySQL数据库进行数据存储的完整聊天室系统。这个项目展示了网络编程和...

    C# tcp/ip Socket Programmer

    1. **TCP/IP基础**:首先,你需要理解TCP/IP协议族的基本概念,包括OSI模型、TCP/IP四层模型(应用层、传输层、网络层、数据链路层)以及各层的主要协议,如HTTP、TCP、UDP、IP等。 2. **C# Socket API**:C#提供了...

    基于socket应用的TCP/Ip通讯

    本文将深入探讨基于Socket应用的TCP/IP通讯,包括其工作原理、实现方式以及如何通过服务端和客户端进行交互。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议。它提供全双工通信,...

    ARM linux 和上位机windows10进行TCP/IP网络通信

    TCP(传输控制协议)和IP(互联网协议)是Internet的基础,构成TCP/IP协议族的核心。TCP提供面向连接的、可靠的数据传输服务,而IP则负责数据在网络中的路由。通过TCP/IP,设备可以跨越不同的网络进行通信。 2. **...

    TCP/IPsocket的简单编程

    TCP/IP套接字编程是网络通信的核心技术,广泛应用于各种操作系统,包括Windows和Linux。本文将深入探讨在...通过实践和研究"socket1"这样的例子,你将能够深入理解TCP/IP通信的内在机制,并逐步提升你的编程能力。

    GPRS.net.zip_.net socket TCP/IP_GPRS网络调试工具_TCP 调试_tcp/ip调试_网络调试

    在压缩包文件"**GPRS.net**"中,很可能包含了一个.NET编写的GPRS网络调试工具,该工具可能集成了Socket编程和TCP/IP调试的功能,为开发者提供了一个直观的界面来监控和调试GPRS网络通信。通过使用这样的工具,开发者...

    TCP/IP通信c#例程

    本文将深入探讨使用C#语言实现TCP/IP通信的实例,帮助你理解并掌握如何构建服务器端和客户端进行数据交互。 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它确保了数据的有序传输和...

    Delphi 编写TCP/IP网络Socket通信程序

    计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议。TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登陆BBS,用的就是TCP协议;UDP是无连接的,通信双方都...

Global site tag (gtag.js) - Google Analytics