图解TCP/IP

协议

协议就是计算机与计算机之间通过网络实现通信事先达成的一种“约定”。这种“约定”使那些由不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。反之,如果使用的协议不同,就无法通信。

  分组交换是将大数据分割为一个个叫做包(Packet)的较小单位进行传输的方法。这里所说的包,就如同我们平常在邮局里见到的邮包。分组交换就是将大数据分装为一个个这样的邮包交给对方。

  2.3 协议分层与OSI参考模型

  协议分层就如同计算机软件中的模块化开发,OSI参考模型的建议是比较理想化的。

  OSI参考模型中每个层的作用:

  7层通信实例:假设主机A的用户A要给主机B的用户B发送一封电子邮件:

  发送方从第7层、第6层到第1层由上至下按照顺序传输数据,而接收端则从第1层、第2层到第7层由下至上向每个上一级分层传输数据。每个分层上,在处理由上一层传过来的数据时可以附上当前分层的协议所必须的“首部”信息。然后接收端对收到的数据进行数据“首部”与“内容”的分离,再转发给上一分层,并最终将发送端的数据恢复为原装。

三、TCP/IP基础知识

 3.1 TCP/IP标准化

  (1)具体含义

  很多人都会认为TCP/IP是指TCP与IP两种协议,实际生活中有时也确实就是指这两种协议。然后,很多情况下,它只是利用IP进行通信时所必须使用到的协议群的统称。

  (2)标准化

  由于TCP/IP尽早地制定了可行性较强的协议,提出了应对技术快速革新的协议,并及时进行后期改良的方案,因此打败了OSI模型,成为了事实上的标准。

  3.2 TCP/IP协议分层模型

  上图列出了TCP/IP与OSI分层之间的大概关系,不难看出,TCP/IP与OSI在分层模块上稍有区别。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”。

  现在再来看看主机A向主机B发送一封电子邮件,在TCP/IP模型下的处理过程:

  分组数据包经过以太网的数据链路时的大致流程如下图所示:

socket套接字 API 讲解:

基于 TCP 的套接字编程的所有客户端和服务器端都是从调用socket 开始,它返回一个套接字描述符。客户端随后调用connect 函数,服务器端则调用 bind、listen 和accept 函数。套接字通常使用标准的close 函数关闭,但是也可以使用 shutdown 函数关闭套接字。下面针对套接字编程实现过程中所调用的函数进程分析。以下是基于 TCP 套接字编程的流程图:

三次握手

socket 函数

套接字是通信端点的抽象,实现端对端之间的通信。与应用程序要使用文件描述符访问文件一样,访问套接字需要套接字描述符。任何套接字编程都必须调用socket 函数获得套接字描述符,这样才能对套接字进行操作。

connect 函数

在处理面向连接的网络服务时,例如 TCP ,交换数据之前必须在请求的进程套接字和提供服务的进程套接字之间建立连接。TCP 客户端可以调用函数connect 来建立与 TCP 服务器端的一个连接。

TCP 客户端在调用函数 connect 前不必非得调用 bind 函数,因为内核会确定源 IP 地址,并选择一个临时端口作为源端口号。若 TCP 套接字调用connect 函数将建立 TCP 连接(执行三次握手),而且仅在连接建立成功或出错时才返回

bind 函数

调用函数 socket 创建套接字描述符时,该套接字描述符是存储在它的协议族空间中,没有具体的地址,要使它与一个地址相关联,可以调用函数bind 使其与地址绑定。客户端的套接字关联的地址一般可由系统默认分配,因此不需要指定具体的地址。若要为服务器端套接字绑定地址,可以通过调用函数 bind 将套接字绑定到一个地址。

对于 TCP 协议,调用 bind 函数可以指定一个端口号,或指定一个 IP 地址,也可以两者都指定,还可以都不指定。若 TCP 客户端或服务器端不调用bind 函数绑定一个端口号,当调用connect 或 listen 函数时,内核会为相应的套接字选择一个临时端口号。一般 TCP 客户端使用内核为其选择一个临时的端口号,而服务器端通过调用bind 函数将端口号与相应的套接字绑定。

listen 函数

在编写服务器程序时需要使用监听函数 listen 。服务器进程不知道要与谁连接,因此,它不会主动地要求与某个进程连接,只是一直监听是否有其他客户进程与之连接,然后响应该连接请求,并对它做出处理,一个服务进程可以同时处理多个客户进程的连接。

accept 函数

accept 函数由 TCP 服务器调用,用于从已完成连接队列队头返回下一个已完成连接。如果已完成连接队列为空,那么进程被投入睡眠。该函数的返回值是一个新的套接字描述符,返回值是表示已连接的套接字描述符,而第一个参数是服务器监听套接字描述符。

close 和 shutdown 函数

当要关闭套接字时,可使用 close 和 shutdown 函数

参考:

http://www.cnblogs.com/edisonchou/p/5987827.html  《图解TCP/IP》读书笔记

http://network.51cto.com/art/201412/459619_all.htm 基于TCP套接字

时间: 2024-08-27 17:18:11

图解TCP/IP的相关文章

图解TCP/IP第五版 -- 目录

很多年前买过<TCP/IP详解>3卷,当时可能根本没看,也可能是看了又忘了,没有留下什么印象,当时的书也当做废品卖了. 卖书时的感觉貌似是,买了太多的书,基本都没看,搬家搬来搬去的麻烦,不如从网上看些资料来的直接,三箱子书都卖了,有很多书都是当年颇有名的,书的范围也很广. 单说语言层面,其实当时没有理解语言的精髓,甚至把开发工具的熟练使用当做学会语言,现在还记得的,买过的有各种<开发人员指南>:Delphi.C++Builder.VB.ASP.JBuilder.C#:现在想来也是不

《图解tcp/ip》读书笔记(二)

<图解tcp/ip>读书笔记(二) 本周主要阅读的是本书的第三章--数据链路. 当然了,从某些角度讲,我认为这一章就是计算机网络的最基本的内容之一.整章讲述了数据链路层的作用和相关技术,主要描述了以太网.无线通信.ppp.公共网络以及其他的一些数据链路一些细节性的技术. 由于之前已经学习过相关计算机网络的课程,因此,就不再详细的记录整个阅读内容了,很多让我突破以前思维定式的一些知识,我挑一些列在下面. 其实这些知识花几分钟.几个小时,就可以得到,或者查阅互联网会得到比这本书更新的技术,但是,有

图解TCP/IP 读书笔记(一)

最近借了本<图解TCP/IP>,看了下之后,感觉有必要记录下得到的东西,和自己的理解,与君共勉. 1.计算机网络的发展背景: 单机模式(只够吭哧吭哧的完成计算任务时)---> 互连模式(计算机总算有余力了,大家也需要共享信息和即时传递消息)---> 互联网络(小范围网络开始聚集,形成互联网社会生态) 其发展个人觉得还是以技术的更新为铺垫的. 2.计算机与网络发展的7个阶段 1)批处理(事先准备好执行的程序和数据,批量处理) 2)分时系统(多个终端一个计算机,模拟一人一机的使用场景)

图解TCP/IP第五版 -- 文件夹

非常多年前买过<TCP/IP具体解释>3卷,当时可能根本没看,也可能是看了又忘了,没有留下什么印象,当时的书也当做废品卖了. 卖书时的感觉貌似是.买了太多的书,基本都没看,搬家搬来搬去的麻烦,不如从网上看些资料来的直接.三箱子书都卖了.有非常多书都是当年颇有名的,书的范围也非常广. 单说语言层面,事实上当时没有理解语言的精髓,甚至把开发工具的熟练使用当做学会语言.如今还记得的,买过的有各种<开发者指南>:Delphi.C++Builder.VB.ASP.JBuilder.C#:如今

图解 TCP/IP 第六章 TCP与UDP 笔记6.1 传输层的作用

?图解?TCP/IP? 第六章?TCP与UDP? ?笔记6.1 传输层的作用 ? 传输层必须指出这个具体的程序,为了实现这一功能,使用端口号这样一种识别码.根据端口号,就可以识别在传输层上一层的应用程序所有进行处理的具体程序. ? 6.1.1 传输层定义 6.1.2 通信处理 ? 6.1.3 两种传输层协议 TCP和UDP TCP 是面向连接的.可靠的流协议.流就是指不间断的数据结构,你可以把它想象成排水管道中的水流. UDP 是不具有可靠性的数据包协议 .细微的处理会交给上层的应用去完成.在U

图解TCP&#39;IP

--TCP和UDP区别: 1)TCP (Transmission Control Protocol)传输控制协议和UDP(User Datagram Protocol)用户数据报协议协议属于传输层协议. 2)其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送.可靠性.有效流控.全双工操作和多路复用.通过面向连接.端到端和可靠的数据包发送.通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送:一般来说,TCP对应的是可靠性要求高的应用. 3)而UDP则不为IP提供可

RocEDU.阅读.写作《图解TCP/IP》

一.对本书的认识 信息通信社会这个词俨然是现代社会的一个名词.人们可以使用各种信息终端随时随地的进行交流,而这种环境正是以来网络才得以实现,使用最为广泛的协议就是TCP/IP协议. 二.读书内容 1  网络基础知识 1.1计算机网络出现的背景 计算机对我们的生活有着不可估量的影响.计算机被应用于生活中的各个角落,也许在我们刚有记忆的时候就可以看着父母操作者win95系统的计算机,记得当年父亲的办公室里还是一台拨动开关的电脑,电脑通过软盘作为移动储存设备.在课堂中得知软盘的大小只有将近20M左右,

读书笔记——《图解TCP/IP》(2/4)

经典摘抄 第三章 数据链路 1.实际的通信媒介之间处理的却是电压的高低.光的闪灭以及电波的强弱等信号. 2.数据链路层的相关技术:MAC寻址.介质共享.非公有网络.分组交换.环路检测.VLAN等 3.数据链路层被视为网络传输中的最小单位. 4.以太网.FDDI和ATM的不同 以太网与FDDI不仅包含OSI参考模型的第二层数据链路层,也规定了第一层物理层的规格. 而ATM中孩子包含了第三层网络层的一部分功能. 5.网络拓扑:网络的连接和构成的形态. 6.MAC地址长48比特. 7.从通信介质的使用

图解TCP/IP→第2章基础知识

####TCP.IP背景**关键词:ARPANET,UNIX,分组交换技术, *ARPANET(阿帕网),也是全球互联网的鼻祖.阿帕网的成功也充分证明了基于分组交换技术的通信方法的可行性. *20世纪70年代前半叶,ARPANET中的一个研究机构研发出了TCP/IP. *大事件表↓→1969年        ARPANET诞生.开发分组交换技术→1972年        ARPANET取得初步成功.扩展到50个节点.→1975年        TCP/IP诞生.→1982年        TCP