欢迎来到天天文库
浏览记录
ID:42578556
大小:197.66 KB
页数:6页
时间:2019-09-18
《TCP Socket编程原理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、我们简单对HTTP相关的基本概念做了一些简单的了解,但未对HTTP连接管理的内容做一些详细的介绍。本篇博客我们就一起来看一下HTTP连接管理的相关内容。世界上几乎所有的HTTP通信都是有TCP/IP承载的,它是一种常用的分组交换网络分层协议集,同时它也是一种可靠的数据传输通道。它可以安全无误的把我们想要传输的数据传输到世界各地。也正是因为它的安全无误,HTTP的连接通信才选择采用TCP/IP传输,HTTP连接实际就是TCP连接及其使用规则。web浏览器与服务器通过TCP连接的交互如下图: ' TCP流是通过分段、由IP分组
2、传送 TCP数据是通过IP分组的小数据块来发送的。这样就形成了“HTTPOVERTCPOVERIP”的数据传输方式。http就是这种传输方式的最顶层。HTTP的安全版本HTTPS就是在HTTP和TCP之间插入了一个密码和加密层(成为TLS或SSL),TCP在传输数据时会以流的形式从一个打开的TCP连接中传输,在传输的过程中TCP流会分成一个个小数据库分不到各个IP分组里面。每个IP分组都包括:l 一个IP分组收首部(包含源和目的IP地址、长度等)l 一个TCP段首部((包含TCP端口号、控制标志等)l 一个TCP数据块 保持TCP连接的正确性 如何保证数据传
3、输过程中的正确性是TCP连接的一个首要任务,世界上那么多的计算机,怎么样才能正确的从源计算机的某个源应用传输到目的计算机的目的应用。TCP就是通过IP和端口号来保证这一连接的正确性的。TCP通过4个值来识别:<源IP地址 源端口号 目的IP地址 目的端口号>TCP数据流中的IP分组中小数据块形式: TCP套接字编程 操作系统提供了一套操作TCP连接的工具,为了简单明了起见,我们来直接看一下TCP的编程接口。主要是Java的一些常用API1.socket(family,type)创建套接字对象,family=socket.AF_INET,typ
4、e=socket.SOCK_STREAM(TCP)/socket.SOCK_DGRAM(UDP)2.s.bind((host,port))绑定套接字s以接收来自主机host在端口号port上的连接。host可以是空字符串(''),表示接受来自任何主机的连接。3.s.listen(maxpending)监听到该套接字的连接尝试,任何时候允许最多maxpending个排队的连接尝试。4.s.accept()s必须是TCP类型,接收一个连接请求并返回一个数据对(s1,(ipaddress,port))。s1是一个新连接的套接字。调用之前必须已经调用了s.bind和s.listen方法。5.s.
5、recv(bufsize)从套接字接收最多bufsize个字节的数据,并返回一个由接收的数据组成的字符串。6.s.sendall(string)在套接字上按字节发送string字符串,该方法将会阻塞,直到所有的字节都被发送。7.s.close()关闭套接字。8.s.recvfrom(bufsize)从套接字接收最多bufsize个字节的数据,并返回一个元组(data,(ipaddr,port))。在使用UDP时很有用,可以接收来自多个发送方的数据。9.s.sendto(string,(host,port))在套接字上将string字符串按照字节发送到目的host和port上,并返回发送的
6、字节数n。对UDP很有用,可以将数据发送到多个目的地。10.s.connect((host,port))将套接字s连接到给定host和port指定的服务器上。 对TCP性能的考虑 HTTP在TCP的上一层,位于应用层,对HTTP性能的考虑无非就是对TCP性能的考虑,在了解了TCP的性能优化之后就可以很好的理解HTTP的连接优化的相关特性了。这样我们在做应用开发的过程中就可以设计实现一些高性能的HTTP应用程序了。 1.HTTP事务时的延时 在一个HTTP事务的整个过程中的延时可以描述出TCP性能瓶颈的问题所在。下面我们从一个图中看一下TCP性能问
7、题所在之处 从上图可以看出整个HTTP事务的延时主要有以下:1).解析时延 DNS解析与DNS缓存客户端首先需要根据URL确定Web服务器的IP地址和端口号,如果最近没有对URL中的主机名进行访问,那么DNS将URL中的主机名转换为IP地址可能会花费数十秒的时间。如果是近期访问过的主机名,那么在HTTP客户端的DNS缓存中,就会保存该主机名对应的IP地址。2).连接时延 TC
此文档下载收益归作者所有