网络编程

关于TCP三次握手

      服务器端被动打开,监听客户端的连接,客户端主动打开。

1.client发送一个SYN包给server(包含一个随机数A)。

2.server收到client的SYN包后发送一个ACK包(发送A+1)确认收到正确无误的包,同时发送一个SYN包(包含一个随机数B)。

3.client发送一个AC包(B+1)确认收到。



关于套接字

根据UNIX系统的设计哲学:一切皆文件。设计套接字的目的是使网络数据的传输像文件读写一样,提供一致的使用体验。

套接字初始化需要三个参数

通信的目的IP地址,IP地址用来标识网络中计算机(传输层)。

传输层协议(TCP/UDP)。

端口号,端口号用来表示同一台计算机中的进程(应用层)。

要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为ClientSocket,另一个运行于服务器端,称之为serverSocket。

根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤服务器监听,客户端请求,连接确认。

服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客 户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。


program A->Program B

建立套接字后,Host A中的Program A 先把数据给socket,再由套接字经网卡封装成TCP/IP数据包传给Host B后将TCP头部剥离后传给socket,最后由socket传给Program B.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在看《UNIX网络编程 卷1》和《FREEBSD操作系统设计与实现》这两本书,我重点关注了TCP协议相关的内容...
    腩啵兔子阅读 1,195评论 0 7
  • iOS网络HTTP、TCP、UDP、Socket 知识总结OSI 七层模型我们一般使用的网络数据传输由下而上共有七...
    蜗牛也有梦想阅读 2,465评论 0 3
  • 一、网络各个协议:TCP/IP、SOCKET、HTTP等 网络七层由下往上分别为物理层、数据链路层、网络层、传输层...
    YoonjaeJ阅读 2,220评论 0 7
  • 多少个夜晚,在梦里与你相遇,梦里多么期望我们可以回到从前,不知道是我对你思念至深,还是依旧恋恋不舍,多想在梦里不会...
    追寻诗和远方阅读 361评论 0 0
  • 不知为何,只有过春节的时候回到老家才觉得有故乡的感觉,这种感觉是人生中最美好的事情之一,真心希望有一天你也能有这种...
    何时再出发阅读 135评论 1 1