인터넷 프로토콜 스택은 5계층으로 나뉘어지며, 각 계층마다 고유의 역할이 있음.
application layer 는 네트워크 애플리케이션과 이 애플리케이션들의 application layer protocol 이 위치하는 곳.
여러 종류의 애플리케이션 계층 프로토콜 중, 어느 프토콜을 사용하여 목적을 달성할 것인지와 관련됨.
이 때 application layer 는 인터넷 통신의 시작점인 동시에 도착점이 됨.
메일 전송에 사용되는 SMTP, 하이퍼텍스트에 주로 사용되는 HTTP, 파일 전송에 사용되는 FTP, 그리고 사람이 쉽게 이해할 수 있는 형태 (ex. https://www.naver.com 과 같은 텍스트로 이루어진 형태)로 서비스 제공자 서버의 주소를 통신하는데 사용되는 DNS 등이 있음.
The Internet’s transport layer transports application-layer messages between application
endpoints
transport layer, 즉 전송계층은 각 호스트 사이의 종단점인 애플리케이션들 간에 정보를 주고받는데 사용되는 패킷 (메세지) 를 전송하는 역할을 함.
일반적으로 인터넷에서는 TCP와 UDP 가 사용됨.
either of which can transport application-layer messages. TCP provides a connection-oriented
service to its applications. This service includes guaranteed delivery of application-layer
애플리케이션이 어떤 전송계층을 사용할지는 개발자의 선택에 달려있으며, 각 프로토콜의 특성에 맞게 선택하게 됨.
TCP 는 connection-oriented, 즉 연결상태 기반 프로토콜로, 호스트들이 통신을 할 때 연결을 구축해서 정보를 주고 받음.
TCP는 flow control, realiable data transfer, congestion control 과 같은 추가적인 기능을 제공함.
반면에 UDP는 TCP와 달리 connectionless, 즉 통신시에 연결을 구축하지 않는 프로토콜이며, TCP와 달리 간단한 오류검출 기능과 demultiplexing 과 multiplexing 기능을 제공함.
to a transport-layer packet as a segment
The Internet’s network layer is responsible for moving network-layer packets known
as datagrams from one host to another.
연결요청 허락
The Internet’s network layer is responsible for moving network-layer packets known
as datagrams from one host to another
인터넷의 네트워크 계층은 전송계층 패킷(segment) 을 한 호스트로 부터 다른 호스트로 전달하는 역할을 함.
대표적인 네트워크 계층 프로토콜로 IP가 있음.
네트워크 계층은 IP뿐만 아니라 통신의 시작점에서 도착점까지의 최적의 경로를 찾는 것과 관련된 프로토콜인 라우팅 프로토콜도 포함함.
따라서 네트워크 계층은 데이터를 적절한 곳으로 전달할뿐만 아니라, 최적의 경로를 찾아주는 네비게이션같은 역할을 한다고 볼 수 있음.
링크계층 프로토콜은 네트워크계층 패킷 (datagram) 을 통신 과정중에 한 장치로 부터 다음 장치로 전달하는 역할을 함.
전송계층과 마찬가지로, 링크계층 프로토콜은 어떤 프로토콜을 사용하느냐에 따라서 추가적인 기능이 제공되기도 함.
기능 중에 네트워크 TCP에서 언급되었던 realiable data transfer도 포함되는데, 링크계층의 reliable delivery service 는 tcp 의 그것과 다름.
링크계층 프로토콜의 예로는 Ethernet, WiFi, DOCSIS 프로토콜 등이 있음.
physical layer, 물리 계층은 각 패킷(frame 이라고 함)을 비트단위로 한 노드에서 다음 노드로 전달하는 역할을 함.
라우터랑 링크레이서 스위치도 프로토콜 스택을 구현하지만 위에서 언급한 다섯계층을 모두 구현하지는 않음(bottom layer들만 구현physical이랑 link만 구현 라우터는 network 까지)
애플리케이션 계층에서 시작해서 패킷이 다른 계층으로 전해지는데, 각 계층의 패킷은 다른 계층의 패킷의 실질적 데이터임을 나타내는 body header field 의 value로 설정됨.
각 계층 통과하면서 추가적인 정보를 데이터(주로 헤더의 형태로) 에 더함.
이런 이유로 각 계층의 패킷은 header field 와 payload field 두가지로 분류된다고 볼 수 있음.