GraphQL lets a client describe the exact shape of data it needs. A product page can request a product, its current price, three reviews, and the viewer's cart state in one operation instead of coordinating several resource-specific requests.
That flexibility changes where networking complexity appears.
The browser may send one compact request, while the GraphQL server makes dozens of database or service calls. Most operations share one URL, which complicates ordinary HTTP caching and rate limiting. A response can contain useful data and errors at the same time. A subscription can stay active for hours even though GraphQL itself does not define its network transport.
GraphQL is a query language and execution model, not a transport protocol. It defines operations, schemas, validation, execution, and response shapes. It deliberately leaves delivery to another protocol.
HTTP is the most common transport for queries and mutations. WebSocket and SSE are common choices for response streams, but GraphQL does not require either. Understanding that boundary prevents many incorrect assumptions about GraphQL networking.