■ 5계층 세션 레이어
- 여기서부터는 application layer라고 부른다. (5 6 7계층)
■ Session
- 반영구적 대화
- Request(요청)와 Response(응답)로 구성됨
- 수신 정보의 동기화를 확보한다.
- 논리적 연결을 유지한다. (Packet Switching에서는 Session이 다수의 Data Stream의 연관성을 의미한다. 즉, 논리적 연결성이다)
■ 세션을 예로 들어 이해해보자.
- 쉽게 생각하면, 우리가 통화한다고 하자. 친구에게 말한마디(요청), 친구가 나에게 말한마디(응답) 해주는 것들이 데이터 스트림이다. 우리는 많은 대화를 나누고 끝냈다. 전화 끝!
- 즉 이러한 전화 한 통화를 끝냈을 때 우리는 많은 대화를 나눴다. 이것이 세션이다.
- 이제는 친구가 아닌 어머니께 전화를 드렸다. 또 대화를 수없이 나누고 끊었다. 이것도 한 세션이 끝난 것이다.
■ 이전 대화와 지금의 대화의 관련성을 증명해야함
- 증명 : Cookie 쿠키를 말함.
■ RPC
- 함수가 서버에 있는 경우.
- client(caller)는 server(callee)에 함수를 요청함. (이 때 함수는 매개변수를 갖게 됨 (X, Y, Z) )
- 서버는 작업을 수행하고 결과값(리턴값) = Return (P) 을 던짐.
- 즉 세션이 이러한 구조와 같다 라는 것을 보여주는 것.
- 세션레이어를 이용해 이러한 RPC를 구현한다.
■ Client – Server Model
- 서비스 및 리소스의 제공자와 사용자를 구분
- 실제 사용에서는 연결 요청 대기와 연결 요청으로 나뉨
■ Peer to Peer (P2P)
- 서로가 요청과 서비스를 다 해준다.
■ Session Layer 5계층의 역할
- Session을 생성, 소멸, 유지, 관리하는 기능 수행
- Full Duplex와 Half Duplex로 나뉨
- 동기화 지원
■ 연결회복 기능?
- 4계층 트랜스포트 레이어도 연결회복기능이 있다. TCP에서. 데이터를 주고받으면서 계속 상대방을 확인함.
- 하지만 4계층은 데이터를 주고 받는, 즉 하나의 데이터 스트림에 대해서만 확인함.
- 하지만! 5계층 세션 레이어는 다르다. 뭐가 다른가?
- 5계층은 모든 데이터스트림의 묶음, 즉 대화가 유지되는 동안에는 계속 확인한다.
■ Full Duplex
- 비동기
- 여러개의 작업을 동시에 할 수 있다.
■ Half Duplex
- 싱크
- 개념적으로 보자면, 한번에 하나의 작업.
■ 이 부분부터는 full duplex, half duplex를 설명하기 위한 자료들이다. 제목에 (참고) 라고 붙은 부분들이다.
■ 하나의 작업안에서 여러개의 작업을 할 수 있게 해준다.
■ 멀티 스레딩 : 여러개의 작업이 하나의 메모리에서 이루어짐.
■ 멀티 프로세싱 : 어러 개의 작업이 각각 메모리를 점유함. (자리잡은 작업들은 서로 메모리를 침범하지 못함)
■ 동기화
- 작업들끼리는 충돌이 나거나 문제가 생기지 않기 위해 동기화가 필요하다.
■ 다수의 데이터가 왔을 때 어떻게 할거야?
- 위의 Video decoder와 Audio decoder의 데이터가 왔다고 치자. 영상이다.
- 근데 둘이 싱크가 안맞으면? 안된다. 영상은 소리와 화면이 맞아야하니까.
- 근데 multi processing은 동기화가 안된다. 왜? 멀티 프로세싱에서는 영상과 소리가 서로 다른 메모리를 쓴다.
- 서로 다른 메모리를 쓴다는 것은 서로 간섭하지 못한다. 즉, 동기화가 안된다
- 하지만 multi-threading이라면?
- 하나의 메모리에 여러 프로세스(영상, 소리등의 작업)들이 참여할 수 있다.
- 즉! 서로 같은 메모리에 있으니 동기화가 가능하다!
■ 좀더 쉽게 예를 들면?
- 멀티 프로세싱 : 서로 다른 공간 안에 있다. 그래서 서로 무슨 작업하는지 알 수 없다. 동기화 못함
- 멀티 쓰레딩 : 서로 같은 공간 안에 있다. 어? 너 그 작업하고 있구나! 너랑 맞출게! 동기화 가능!
■ 결론
- 네트워크 통신에서는 데이터들간의 조화를 맞추기 위해 싱크가 필요해! 동기화 때문에!
- 여러 개의 서비스를 제공하고, 그것들이 동시적인 느낌을 줘야한다.
- 이를 위해 멀티 스레드 방식을 쓴다.
■ TCP IP 에서 소켓을 만드는 과정
■ 카톡 전화를 예로 들 수 있다.
- Invite~ Ack 까지는 sync(동기)
- 위의 RTP 쪽 은 서로가 대화하는 곳이다. 여긴 async(비동기)
- bye~200 ok 쪽은 sync (동기)
- 그리고 이 묶음을 세션이라 함.
- 중간에 서버가 있는 점 기억하자. (통화자들끼리 다이렉트 연결이 아님)
- 서버가 세션을 관리한다. 중요!
■ HTTP에서의 세션
- get doc(요청) - doc(응답) 과 같은 작업이 반복
- 그러나 각 요청과 응답은 서로 연관성 없음. (no state continuity)
- 즉 http는 각 요청과 응답에 대해 연관성을 모름.
- 그러나 이를 TCP(4계층)에서 세션 관리기능을 지원해줘서 연관성을 알게 해줌. 아래에서 좀 더 자세히 보자.
■ 쿠키!
- 쿠키를 이용해서 http는 각 요청과 응답 간의 연관성을 알게 해준다.
- 요청과 응답이 여러개가 있는데, 그들의 관계를 만들어주는게 세션이다.
- 결론은 꼭 5계층 세션레이어에서 요청과 응답 간의 관계를 파악해서 세션을 만드는 것이 아닌, 4계층에서도 수행할 수 있다. 즉 OSI 7계층과 TCP.IP모델이 절대적으로 1:1 로 매칭 되는 것이 아니다.
■ 학습정리
1. Session
- 반영구적 대화
- Request & response로 구성
2. Session Layer
- Session의 생성, 소멸, 유지, 관리
- 수신 정보들의 동기화 관리
3. Multi Threading
- 저장 공간을 공유하는 다중 작업
- 안전한 정보 관리를 위한 동기화 필요
- 다수의 작업들의 흐름 제어를 위한 동기화 필요
'컴퓨터공학 > 컴퓨터네트워크' 카테고리의 다른 글
11. 전송 계층 (0) | 2024.07.07 |
---|---|
10. 네트워크 계층 (0) | 2024.07.06 |
9. 데이터 링크 계층 (0) | 2024.07.06 |
8. 물리 계층 (0) | 2024.07.05 |
7. OSI 7 계층 개요 (0) | 2024.07.05 |