네트워크 관련 일을 하다보면 당연히 듣게 되는 OSI 7 layer 이녀석을 파해쳐보자.
osi 7 layers는 한 컴퓨터에서 다른 컴퓨터로 갈때 지나가는 layers를 7개의 계층으로 나누어 놓은 것이다.
각 계층을 통과할때 캡슐화를 하게 된다.
좀 더 자세히 그리면,
(1) 응용 계층
(2) 표현 계층
(3) 세션 계층
(4) 전송 계층
(5) 네트워크 계층
(6) 데이터 링크 계층
(7) 물리 계층
위 7개의 계층을 따라가면서 7,6,5,4,3,2,1 단계 -> 1,2,3,4,5,6,7 단계를 거치며 데이터가 전송이 된다.
(1) 모듈화
(2) 표준화
예를 들어 django로 예시를 드는 case를 만들어보겠다.
클라이언트에서 HTTP GET 요청이 시작된다.
브라우저나 다른 클라이언트 응용 프로그램이 해당 요청을 생성하여 리소스의 URI를 지정한다.
("111.111.111.111/apis/something")
이 계층에서 데이터 형식이나 인코딩이 결정된다
예를 들어, 텍스트 데이터가 UTF-8로 인코딩될 수 있다!
UTF-8 인코딩에 관련해서는 이전 포스팅 참조!
[https://velog.io/@harrysong961205/1%EB%B0%94%EC%9D%B4%ED%8A%B8%EB%8A%94-%EC%99%9C-16%EB%B9%84%ED%8A%B8%EB%8F%84-%EC%95%84%EB%8B%88%EA%B3%A0-4%EB%B9%84%ED%8A%B8%EB%8F%84-%EC%95%84%EB%8B%88%EA%B3%A0-8%EB%B9%84%ED%8A%B8%EC%9D%BC%EA%B9%8C]
클라이언트와 서버 간의 연결을 관리한다
필요한 경우 세션을 설정하고 유지하는 단계!
(세션을 어떻게 안전하고 지속적으로 유지할 수 있나여 -> 추후 포스팅)
클라이언트와 서버 간에 TCP 연결이 설정되고, GET 요청이 서버로 전송된다.
IP 프로토콜을 통해 데이터 패킷이 목적지 서버로 라우팅된다.
이 과정에서 라우터가 패킷을 적절한 경로로 전달한다.
(패킷이 뭔데요! -> 추후 포스팅)
6. 데이터 링크 계층 (Data Link Layer):
이 계층에서는 물리적 네트워크 경로를 통해 프레임이 전송된다.
이웃 노드 간의 연결 및 에러 검출이 이루어집니다.
(과정과 이웃 노드 연결, 에러검출 -> 추후 포스팅)
물리적 매체(예: 케이블)를 통해 비트가 전송됩니다.
전기적인 신호로 변환되어 목적지 서버로 전달됩니다.
(전기적인 신호는 도대체 어떻게 연결되는가 -> 추후 포스팅)