笔记一下学习网路五层#2.7

Socket Programming: Creating Network Applications

複习一下当我们建立一个network application,我们基本上包含了一组programs,client program & server program,分别存在于两个end system,当两个program执行后,client process & server process被建立,这些processes透过socket互相沟通,因此身为一个developer主要就是负责撰写code for clicent program & server program

Network applications有两种types,一种为implementation,主要实作于protocol standard,例如 RFC 或者其他 standard document,这样的application通常又被称为open,因为规则以及行为是被公开,因此此类别的程式设计需要遵守standard的标準

另一种type则为proprietary,此类型主要运用的protocol尚未被公开发布在RFC或者其他国际网路规範,client side & server side program都由同组开发者完成,而开发者完全掌控code的内容,由于此类别并非实作于公开的protocol上,其他独立开发者也就不能开发与此application相互操作的code。

下面会透过简单实作的code来探讨开发一个client-server application的简易流程,在开发者阶段,第一步主要得决定此application是基于 TCP || UDP,因此会就此两种protocol类型来介绍。

Socket Programming with UDP

sending process将packet push 到 socket 前,UDP会先将destination address资讯带给packet,packet到达sending socket时,Internet便会根据此资讯导引到receiving process socket。由于传递的途中或许会经过许多network application process以及多个sockets,辨别destination receiver socket是必要的,因此在socket建立过程中,port number会被指认到socket当作idtentifier。而此项讯息也会被包含在destination address里。此外,source address的资讯有同样会被带入packet,特别注意到,source address的带入动作并非由UDP application code执行,而是自动由operating system完成的。

http://img2.58codes.com/2024/20107670LFn1xTVweA.png

Socket Programming with TCP

不同于UDP,在client & server 开始彼此沟通前,必须先通过handshake的行为并建立TCP conntectionTCP connection的两端分别连结着sending socket & receiver socket,建立的同时也会将两端的IP address 以及 port number连结于TCP connection上,两端的互动都将由socket把data丢到TCP connection传递。不同于UDP的server必须先将destination address 附在 packet上才能进入socket传递。

相同的是,两者的server都必须是在running的状态下,client端才能initiate动作。而在TCP中,首先 clicent initiate a TCP connection to the server,这在client program建立TCP socket时完成,当建立的途中会将Server hostIP address以及 socket的port number带入,建立完成后开始three-way handshake并建立TCP connection with the server,建立connection主要是在transport layer,在应用层的client and server program是观察不到的。
http://img2.58codes.com/2024/20107670kCTXHqFZcm.png
TCP socket为所有建立tcp coneection之前先执行一个打招呼的动作,也就是handshake的部分,接着的connection socket才是主要用于传递沟通的管道,
http://img2.58codes.com/2024/20107670lCOBfgQJMM.png


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章