본질은 파일이지만 프로토콜을 추상화했기에 소켓으로 정의를 한다. TCP 소켓인 경우 소켓에 attach되는 내용 중 하나가 Port 번호이다. 포트번호는 16bit(대부분)인데, 이는 0~65535가지의 경우의 수가 있다. 이때 0과 65535는 사용 할 수 없다.
인터넷에 접속할 땐 소켓을 열어주는데, 이때 소켓의 포트번호 하나에 브라우저 하나를 담당한다. 즉 엣지와 크롬을 사용할 땐 두개의 포트번호가 열리게 된다.
데이터의 흐름을 간단하게 설명하자면:
데이터 패킷 -> NIC -> Driver -> TCP/IP -> Process / Edge / etc
이때 프로세스로 갈지 다른 곳으로 갈지는 포트번호에 따라 목적지가 결정된다.
Port번호는 Socket에 binding 된다는 걸 명심하자.
Switch는 선택이라는 개념으로 시작할 수 있다. 데이터를 최종 목적지 까지 효율적으로 최단거리로 갈 수 있는지 고려하는 건 네트워크에서 매우 중요한 일이다. 인터넷은 기본적으로 라우터의 집합체(L3)인데, 인터넷에서 출발한 데이터는 라우팅 테이블을 통해 데이터 패킷은 적절한 Switching(라우터)을 하여 최종 목적지로 도달 할 수 있다.
Socket은 프로토콜을 추상화 한 파일을 뜻 하는데, 파일의 I/O은 기본적으로 시작점만 있으며, 데이터를 Write할 때 마다 지속적으로 용량이 커진다. Socket또한 File이기에, 이러한 특징을 갖고 있는데, 이 개념을 Stream이라고 부른다. Stream의 특징은 시작점을 알지만 종료지점은 정해져있지 않다는 것 이다. 하지만 데이터가 IP 단위를 넘어서게 된다면, 한번에 데이터를 전송하기 어려울 수 있다. 이 때 등장한 개념이 바로 segment다. IP단위에서 다루는 단위가 바로 Packet이고, NIC단위에선 Frame이다.
Stream -> Segment화 -> Segment -> Packet -> Encapsulation -> Frame
패킷의 최대크기(MTU 1500bytes)에 따라서 Segment의 최대크기(MSS)가 정해진다.
통신을 하고 싶다면 Socket에 IP가 바인딩 되어야한다, 만약 무선,유선을 동시에 사용한다면 어떤 네트워크를 이용해 통신을 할지에 대한 결정권(인터페이스 선택) 을 고려해볼 필요가 있다.
인터페이스의 선택은 Switching과정이라 볼 수 있다. 일반적으로 매트릭 값이 가장 낮은 순위를 근거로 인터페이스 선택이 결정된다. 이때 매트릭 값은 비용이라고 생각하면 쉽다.
웹 서비스의 초석은 무선(Text)와 링크의 확장구조다. 문서(HTML)를 인터넷에 연결하고 HTTP를 통해 문서를 전달하는 행위를 실행하는 주체가 바로 웹 서비스 본체다.