很多朋友一直不太清楚网络协议,软件编程的关系
网络是分层多个层次的
其实我们能在软件中看到的就是socket,socket一般由两个参数一个是端口,一个是IP其实这两个就对应了网络协议中的 传输层和 网络层,
例如 我们在开一个 web服务的端口是 192.168.55.88:2003
其中的2003端口就是传输层要用的, 而 192.168.55.88就是网络层要用的,
其实就是要分装不同的包头时需要用到的信息。现实中开发的小伙伴们基本不会用到底层的传输协议。特别是web开发的小伙伴基本就用到了Http协议,这时一定要明白 http协议到底是什么?
如果用直白的语言进行表达的话:那socket就相当于开通了一条通信道路,在道路就可以进行信息的传递了,但传递的信息到底按什么方式进行传输,以及如何解析就是应用层协议要干的事情了(应用层的协议包括了 http ftp Smtp 等等的协议)。
其实这里的应用层协议 大概的意思就是 我发一个A字符串你要用B字符串对我进行应答,并且规定B字符串 应该是什么样的格式。
那么按此推测我们自己也可以定义一个应用层协议 ,要求你发个X ,我用Y来应答,那这就是一个简单的协议,只是没有什么实际的意义。像http ftp smtp pop3等协议都是为了解决特定场景的问题,做的一些特殊的规定,且大家都遵守而已。
还有最后一点就是 要是搞不明白协议的时候一定要看 原版的 rfc文档 ,因为只有它才是最地道的,不会因为别人的翻译导致变味,切记切记。