网络协议趣谈基于TCP和UDP的套接字Socket编程

Posted sysu_lluozh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络协议趣谈基于TCP和UDP的套接字Socket编程相关的知识,希望对你有一定的参考价值。

在TCP和UDP协议中主要分客户端和服务端,在写程序的时候也同样这样分

Socket这个名字很有意思,可以作插口或者插槽讲。虽然是软件程序,但可以想象为弄一根网线,一头插在客户端,一头插在服务端,然后进行通信。所以在通信之前,双方都要建立一个Socket

在建立Socket的时候,应该设置什么参数呢?Socket编程进行的是端到端的通信,往往意识不到中间经过多少局域网,多少路由器,因而能够设置的参数也只能是端到端协议之上网络层和传输层的

网络层
Socket函数需要指定到底是IPv4还是IPv6,分别对应设置为AF_INET和AF_INET6

传输层
Socket函数需要指定到底是TCP还是UDP,TCP协议是基于数据流,所以设置为SOCK_STREAM,而UDP是基于数据报,因而设置为SOCK_DGRAM

一、基于TCP协议的Socket程序函数调用过程

两端创建了Socket之后,接下来的过程中TCP和UDP稍有不同,接下来先来看TCP

TCP的服务端要先监听一个端口,一般是调用bind函数给这个Socket赋予一个IP地址和端口。为什么需要端口呢?
要知道,应用程序当一个网络包来的时候,内核要通过TCP头里面的这个端口来找到这个应用程序,把包给你
为什么要IP地址呢?
有时一台机器会有多个网卡,也就会有多个IP地址,可以选择监听所有的网卡,也可以选择监听一个网卡,这样,只有发给这个网卡的包,才会给你

以上是关于网络协议趣谈基于TCP和UDP的套接字Socket编程的主要内容,如果未能解决你的问题,请参考以下文章

基于 Socket 的 UDP 和 TCP 编程介绍

基于 Socket 的 UDP 和 TCP 编程介绍

网络编程[第二篇]基于udp协议的套接字编程

82.基于tcp和udp协议的简单通信套接字编程

socket 套接字编程

网络协议趣谈UDP协议