window通信协议TCP/IP
来源:互联网 发布:打字软件有什么 编辑:程序博客网 时间:2024/05/22 03:18
今天集中讲解一下通信协议TCP/IP,主要包含通信协议的基础,通信协议的数据格式,通信协议的流程,TCP/IP的具体的意义,最后列举了我做实验的一个通信的例子。这些主要是整理网上搜索看到的资料,记录下来。
1).通信协议TCP/IP的基础(百度TCP/IP协议):
结构:
名词解释:
IP:
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
UDP:
ICMP:
通讯端口:
数据格式:
IP地址:
IP地址实际上是一个32位的二进制值。为了阅读与记忆,每8位之间用一个点开划分,然后把每个8位二进制转换成10进制。由于8位二进制的值从0到255(即二进制11111111),因此IP地址的值会在0.0.0.0到 之间,当然有一些特殊的值有着特殊的作用。 IP地址的分类也是以二进制为基础的。A类地址的第一个8位二进制是以0开头的,B类地址是以10开头的,而C类地址是以110开头的。这也是为什么A类地址的头位是少于128,而B类是大于或等于128且少于192,C类地址是192或192以上了。
每个IP地址被划分为两个部分,一个为网络地址(Network Address),用于表示计算机所从属的网络号,一个为节点地址(Node Address,也成为主机地址),用于指明该网络上某个特定主机的主机号;网络地址和节点地址通过网络掩码(netmask)进行区分,对应网络掩码二进制位为“1”的IP地址部分为网络部分,其他的为节点部分。例如网络掩码255.255.255.0将192.168.1.200 的网络部分分为192.168.1和200两部分,因此其网络地址为192.168.1.0,节点部分为0.0.0.200。同一个网络中的网络地址应该相同(即IP地址和掩码做与运算,结果必须一样才能通信),但节点地址应该不同
更详细的计算见(百度:彻底明白IP地址的含义):http://wenku.baidu.com/link?url=x_9zm_-3Gbjh0VDHW_csou21DjsW31ORMPigOboiuZT_wD8_60DWZdid4tJpe0nLtq5rxbzEAIV5bad1nGlyRukHoYRtr2vbTCxgQbYerS(一定要看一看)
Ip和端口的关系:
那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。端口号就是打开门的钥匙。真正的房子只有几个门,但是一个IP地址的端口 可以有65536个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区 分不同的服务的
网络接口:
这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。网络层 负责相邻计算机之间的通信。其功能包括三方面:一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。二、处理输入数据报:首先检查其合法性(IP接发的路线),然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。三、处理路径、流控、拥塞等问题。传输层提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。应用层 向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。
socket:
socket是对tcp/ip协议的分装。例子如下:
所以说,Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,
从而形成了我们知道的一些最基本的函数接口,比如create、listen、connect、accept、send、read和write等等。
网络有一段关于socket和TCP/IP协议关系的说法比较容易理解:
“TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。
这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,
TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。”
关于TCP/IP协议的相关只是,用博大精深来讲我想也不为过,单单查一下网上关于此类只是的资料和书籍文献的数量就知道,
这个我打算会买一些经典的书籍(比如《TCP/IP详解:卷一、卷二、卷三》)进行学习,今天就先总结一些基于基于TCP/IP协议的应用和编程接口的知识,也就是刚才说了很多的HTTP和Socket。
CSDN上有个比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。
下面是一些经常在笔试或者面试中碰到的重要的概念,特在此做摘抄和总结。
一、什么是TCP连接的三次握手
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。
理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
二、利用Socket建立网络连接的步骤
建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket 。
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
1、服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
2、客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。
为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
3、连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。
而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
三、HTTP链接的特点
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
四、TCP和UDP的区别(考得最多。。快被考烂了我觉得- -\\)
1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;
而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。
2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。
知道了TCP和UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,
因为程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,
即使是这样,UDP因为在底层协议的封装上没有采用类似TCP的“三次握手”而实现了TCP所无法达到的传输效率。
- window通信协议TCP/IP
- Tcp/Ip通信协议
- TCP/IP网络通信协议
- tcp/ip socket通信协议
- 通信协议TCP/IP协议
- 简单认识tcp/ip通信协议
- 网络基础TCP/IP通信协议
- 关于TCP/IP 因特网 (Internet) 的通信协议
- tcp通信协议
- TCP/IP 是用于因特网 (Internet) 的通信协议
- TCP/IP 是用于因特网 (Internet) 的通信协议。
- iOS中 HTTP Socket TCP IP通信协议详解
- iOS中 HTTP/Socket/TCP/IP通信协议详
- iOS中 HTTP/Socket/TCP/IP通信协议详解
- TCP/IP 是用于因特网 (Internet) 的通信协议
- IOS-HTTP/Socket/TCP/IP通信协议学习总结
- TCP/IP实现window和unix通信
- WINDOW与LINUX的TCP/IP通信
- tomcat在conf/Catalina/localhost目录下配置项目路径
- 电源引起的内存报警故障
- JQuery对checkbox操作 (循环)
- 简单的Emoji demo
- 如何查看APP ID
- window通信协议TCP/IP
- Android常用尺寸
- 为什么关闭浏览器网页时电脑出现卡屏
- 学习 gcc编译器使用4,头文件或库的搜寻路径的设定
- MySQL 返回更新值(RETURNING)
- 带进度的多文件上传(支持上传.doc后缀的word文档并在线预览)
- 推荐!国外程序员整理的 C++ 资源大全
- Kafka使用入门教程
- 对称与非对称和可逆不可逆加密算法总结