네트워크 레이어를 설계한 이유는 각 단계 별 환경
이 변할 수 있고,
Data-link 영역처럼 다양한 하드웨어 장치와 환경
(와이파이, LTE, 랜선, …)이 나올 수 있고
한번에 설계하면 다 바꿔야 하니까, 레이어를 나눠서 약속(Protocol)
을 정해둔 것
OSI 7 Layer 모델
은 거대한 네트워크 소프트웨어의 구조
이며 총 7개의 Layer로 되어있음
소프트웨어 아키텍처중에 Layered Architecture
를 따르는 대표적인 예가 네트워크 시스템
7)
Application Layer
(TCP/IP는 5~7 계층이 Application Layer로 통합)
6) Presentation Layer
5) Session Layer
4)Transport Layer
(포트넘버를 사용하여 최종 도착지 컴퓨터의 프로세스에 데이터를 도달하게 하는 모듈)
3)Network Layer
(IP주소를 이용해서 길을 찾고 다음의 라우터에게 데이터를 넘겨주는 것)
2)Data-Link Layer
(데이터에 특정한 비트열 붙여 다수의 컴퓨터가 데이터를 주고 받게하는 모듈)
1)Physical Layer
( 0과 1신호 <-> 아날로그 신호로 변경해주는 모듈)
운영체제의
Transport Layer(4계층)
의API를 활용
해서 통신 가능한 프로그램을 만드는 것을
TCP/IP 소켓 프로그래밍
, 또는네트워크 프로그래밍
이라고 합니다.
대표적으로 HTTP로 인코딩 & 디코딩을 합니다.
클라이언트 & 서버 패러다임(header,body,request,response,status code 등등...)을 알아야 하고
소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작 시킬 수 있습니다.
자신만의 Application Layer 인코더와 디코더, 프로토콜을 만들어서 사용할 수 있습니다.
TCP/IP Model에서는 5~7계층(Session, Presentation, Application)을 Application Layer로 통합
포트번호(Port Number)
를 사용하여
최종 도착지인 컴퓨터의 프로세스에까지 데이터가 도달하게 하는 모듈
해당 기능은 운영체제의 커널에 소프트웨어적으로 구현
송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스 포트번호를 알아야하고
데이터를 받고자 하는 프로세스는 포트번호(Port Number)를 가져야 합니다.
목적지가 있는 컴퓨터로 데이터를 전송하기 위해
IP주소를 이용해서길을 찾고
(routing)
자신 다음의 라우터에게데이터를 넘겨주는 것
(forwarding)
해당 기능은 운영체제의 커널에서 소프트웨어적으로 구현
TCP/IP Original
에서는 Internet Layer
였지만
TCP/IP Updated
에서는 Network Layer
로 통합됨
같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
송신자는데이터의 앞 뒤에 특정한 비트열을 붙여서 전송
Framing은 Data-link Layer에 속하는 작업들 중 하나
해당 기능은 랜카드에서 구현되어있고 하드웨적으로 구현
TCP/IP Model에서는 1,2계층을 통합
물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈(module)
0과 1의 나열을아날로그 신호로 바꿔서
전선으로 흘려보내고(encoding)
아날로그 신호가 들어오면0과 1의 나열을 해석
(decoding)
해당 기능은 PHY칩에서 구현되어있고 하드웨어적으로 구현
TCP/IP Model에서는 1,2계층을 통합
참고자료
책 CSAPP
TCP/IP Programming.pdf (SWjungle 내부자료)
테코톡 - 히히의 OSI 7 Layer