네트워크 프로그래밍 - 네트워크 레이어, OSI 7 Layer

Jocy·2022년 5월 17일
1
post-thumbnail

네트워크 레이어

네트워크 레이어를 설계한 이유는 각 단계 별 환경이 변할 수 있고,
Data-link 영역처럼 다양한 하드웨어 장치와 환경(와이파이, LTE, 랜선, …)이 나올 수 있고
한번에 설계하면 다 바꿔야 하니까, 레이어를 나눠서 약속(Protocol)을 정해둔 것

OSI 7 Layer Model의 구성

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신호 <-> 아날로그 신호로 변경해주는 모듈)

Application Layer(5~7계층)

TCP/IP 소켓 프로그래밍

운영체제의 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로 통합

Transport Layer(4계층)

포트번호(Port Number)를 사용하여
최종 도착지인 컴퓨터의 프로세스에까지 데이터가 도달하게 하는 모듈

해당 기능은 운영체제의 커널에 소프트웨어적으로 구현
송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스 포트번호를 알아야하고
데이터를 받고자 하는 프로세스는 포트번호(Port Number)를 가져야 합니다.

Network Layer(Internet Layer)(3계층)

목적지가 있는 컴퓨터로 데이터를 전송하기 위해
IP주소를 이용해서 길을 찾고(routing)
자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding)

해당 기능은 운영체제의 커널에서 소프트웨어적으로 구현
TCP/IP Original에서는 Internet Layer였지만
TCP/IP Updated에서는 Network Layer로 통합됨

같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
송신자는 데이터의 앞 뒤에 특정한 비트열을 붙여서 전송
Framing은 Data-link Layer에 속하는 작업들 중 하나

해당 기능은 랜카드에서 구현되어있고 하드웨적으로 구현
TCP/IP Model에서는 1,2계층을 통합

Physical Layer(1계층)

물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈(module)
0과 1의 나열을 아날로그 신호로 바꿔서 전선으로 흘려보내고(encoding)
아날로그 신호가 들어오면 0과 1의 나열을 해석(decoding)

해당 기능은 PHY칩에서 구현되어있고 하드웨어적으로 구현
TCP/IP Model에서는 1,2계층을 통합

참고자료
책 CSAPP
TCP/IP Programming.pdf (SWjungle 내부자료)
테코톡 - 히히의 OSI 7 Layer

profile
Software Engineer

0개의 댓글