计算机网络协议(二)
一:背景
当有了高层次的网络库之后,就可以直接通过http进行网络操作了,而不再基于socket进行基本的(TCP/UDP)接口编程
当使用高层次的网络库(如requests
、http.client
等)时,大部分开发者会选择直接通过 HTTP 协议进行网络操作,而不再直接基于socket
编程进行底层的 TCP/UDP 接口编程。这是因为高层次的网络库提供了许多封装好的功能,简化了网络通信的复杂性。
二:具体原因
为什么使用高层次的网络库:
封装和简化:高层次的库提供了 HTTP 请求的封装,处理了连接管理、请求/响应处理、错误处理等复杂细节,开发者无需关心底层的连接和数据传输。
跨平台兼容性:这些库(如 requests)已经做了跨平台的优化,能够自动处理各种系统差异和兼容性问题。
功能丰富:这些库支持很多高级功能,比如身份验证、SSL/TLS 加密、Cookie 处理、文件上传等,开发者可以直接调用,而不需要手动实现这些功能。
调试和扩展性:高层次库通常也提供了易于调试的工具,能够方便地查看请求和响应的内容,或者通过中间件进行扩展。
三:何时需要用到 socket
编程
尽管高层次的网络库满足了大部分应用需求,但在以下情况下,直接使用 socket
编程仍然是有用的:
底层控制:如果你需要对网络通信有精细的控制,比如实现自定义的协议或直接操作 TCP/UDP 的细节,
socket
编程是不可避免的。性能要求:对于需要超高性能、低延迟的场景,直接使用
socket
编程可能会提供更好的性能,尤其是在高并发和实时通信等应用中。协议不支持:如果你需要使用的协议不在 HTTP 的范畴内,像某些专有协议,或者需要实现低层次的协议(如自定义的 TCP/UDP 协议),就需要手动使用
socket
。