Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

아보카도 Blog

TIL 15일차: 새로운 프로젝트 시작, 특강 OSI 7계층 본문

개발일지

TIL 15일차: 새로운 프로젝트 시작, 특강 OSI 7계층

수수 아보카도 2022. 12. 3. 00:25

오늘은 아침부터 새로운 프로젝트 발제가 있었다.

이번 프로젝트는 자유주제로 뉴스피드 형식의 웹페이지 구현이었다.

우리조가 선택한 건 "코드스캐너"라는 이름의 코드 리뷰 사이트다.

이번에는 NoSQL인 MongoDB가 아닌 MySQL을 데이터베이스로 사용하는만큼

11월 30일 특강 다시 복습하면서 연결시키는 방법을 다시 공부해야 한다.

내가 맡은 부분은 문제 풀이 아래에 있는 댓글 페이지 구현.

다양한 메소드를 구현하는만큼 이번기회에 폭풍성장할 수 있었으면 좋겠다.

그래도 우중님이 짤막하게라도 설명해주셔서

app.py의 flask랑 프론트엔드인 comment.html 사이를 연결하는 걸 확신을 갖고 할 수 있게 되었다. 고맙습니다.


오후 4시에는 OSI 7계층에 대한 특강이 있었다.

그곳에서 배운 것을 짤막하게 써보자면,

1. 네트워크

네트워크란 정보가 전송되는 경로다.

통신 장비로는 LAN장비, WAN 장비가 있다.

LAN은 사무실과 같이 좁은 범위의 네트워크를 말하고, 우리가 흔히 쓰는 와이파이 공유기도 여기에 포함된다.

WAN은 서로 떨어져있는 LAN 사이를 전용선 등으로 연결하는 광역 네트워크를 말한다.

우리 와이파이 공유기 뒷면을 보면 맨 왼쪽이 WAN포트이고 나머지는 다 LAN 포트이다.

네트워크 통신 역할로 서버와 클라이언트가 있고, 통신 규칙으로 TCP/IP를 예로 들 수 있다.

서버의 예로는 공유기, 도메인 관리기 DNS, IP 할당기(DHCP), 시간관리기(NTP) 등이 있다.

 

우리가 오늘 주로 배운 OSI 7계층은 네트워크 기본 구조 가이드라고 할 수 있다.

이 때 기능에 필요한 몇 개의 계층만 표준화한다면 정상적으로 통신이 가능하다.

 

각 계층의 이름과 역할은 다음과 같다.

애플리케이션 계층 사용자 지원계층 7 응용계층 Application 애플리케이션 서비스 제공
6 표현계층 Presentation 문자 코드 압축, 암호화
5 세션계층 Session 통신 방향 결정
전송계층 4 전송계층 Transport 신뢰성있는 통신 구현
데이터 플로우 계층 네트워크 지원계층 3 네트워크계층 Network 다른 네트워크와 통신하기 위한 IP 주소 결정
2 데이터링크계층 Data Link 물리주소 결정
1 물리계층 Physical Layer 물리적인 연결과 전기 신호 변화

 

TCP/IP 프로토콜은 TCP와 IP를 중심으로 한 여러 프로토콜의 집합체이다.

3계층(네트워크 계층)을 통해 전달받는 작은 데이터의 단위로, 데이터는 패킷으로 나뉘어서 보내진다.

 

7 계층

채팅앱을 깔아서 통화를 하지만 채팅앱이 신호를 전달하는 것은 아니라는 것을 모두 알 것이다. 채팅앱은 단지 사용자와 인터페이스 하는 일을 한다. 상대방도 마찬가지로 채팅앱을 통해서 신호를 받고 사용자와 인터페이스를 한다. 이것이 OSI 7계층에서 최상위 7계층, 응용계층이 하는 일이다. 전화를 걸고 받고 화면에 표시하고 상대방이 온라인인지 알려주고 하는 것이다. 기기와 사용자간의 인터페이스를 담당한다.

6 계층

보이스톡을 보내려면 음성을 0과 1의 신호로 변환해야 한다. 이를 수행하는 것이 6계층, 표현계층이 하는 일이다. 필요할 경우 암호화를 한다면 이것 또한 6계층이 하는 일이다.

5 계층

전화를 끊고 연결하는 것을 관리하는 것을 5계층, 세션 계층이라 한다. 전화 걸고 끊는데 계층씩이나 필요한가라고 생각할 수 있겠지만 어떤 서비스에서는 이 계층이 하는 일이 많기도 하다. 만약 예전의 유선전화를 예로 든다면 통화 중엔 나와 상대방이 사용하는 회선이 연결되어 있고 통화가 끝난 후엔 다른 사용자를 위해 회선이 릴리스되어야 한다. 이러한 역할을 하는 것이 5계층이다.

4 계층

하나의 서비스마다 5,6, 7계층이 존재한다면 4계층 이하는 여러 개의 서비스가 동시에 공유해서 이용하는 계층이라고 볼 수 있다. 보이스톡 데이터를 보낸다고 할 때 우리 귀엔 전화가 끊김 없이 유지되고 있는 것 같지만 실제로는 음성데이터를 패킷이라 불리는 묶음으로 만들어 보내지게 된다. 우리가 보이스톡과 브라우징을 동시에 할 수 있는 것은 이 4계층에서 보이스톡 패킷과 브라우징 패킷이 함께 서비스되기 때문이다.

4계층, 전송계층은 이러한 패킷들이 상대편에게 빠짐없이 순서대로 전송되고 필요할 경우 재전송을 요청하고 이전 패킷과 합치는 등 패킷의 전달을 책임지고 있는 계층이다.

3 계층

3계층, 네트워크계층은 패킷을 전달하는 계층이라고 보면 된다. 4계층 이상이 송신자와 수신자의 장치에 위치해 있다면 3계층 이하는 여러 노드에 분산되어 있다. 패킷이 어느 경로를 통해 전송되는지를 관리하는 것이 이 3계층이다. 보이스톡과 인터넷브라우징을 동시에 할 경우 두 데이터는 서로 다른 경로를 타고 전송되어야한다. 장비의 IP 주소를 알면 어떤 식으로든 데이터를 보낼 수 있다. IP 프로토콜이 이 계층의 가장 유명한 프로토콜이다. 라우터는 IP 패킷의 헤더를 분석해 다음 라우터로 전송하는 일을 한다. 이렇게 라우터들의 중계를 거쳐 보이스톡은 상대방에게 브라우징데이터는 서버로 전달된다. 기술사를 공부하면서 IP 프로토콜의 헤더를 외워야 했다. 그리고 그 몇 개 안되는 IP 헤더들로 패킷이 수 백 개 또는 수 천 개의 라우터와 스위치를 거쳐 수신자에게 전달된다는 게 그저 신기하기만 했다.

2 계층

2계층, 데이터링크 계층은 이제 신호를 유선 또는 무선 매체를 통해 전달하기 위한 준비를 하는 계층이라고 보면 된다. 두 라우터간에 전선에 이상이 생겨 신호가 깨질 경우 복구해야 하고 영영 복구가 안되는 것 같으면 상위 계층에 이를 알려야 한다. 무선이 경우 더욱더 신호 오류가 생길 가능성이 많으므로 복구를 위한 노력이 더 들어가게 된다. 또한 동일 매체를 통해 수많은 데이터를 보내야 하므로 어떻게 멀티플렉싱할 것인지 어떤 데이터를 선별해서 보낼 것인지를 관리한다. 또한 상위 계층의 패킷을 몇 개 연결해서 한꺼번에 보낼 것인지 끊어서 보낼 것인지를 관리한다.

1 계층

1계층, 물리계층은 신호가 직접적으로 보내지는 매체에 적용되는 것이다. CDMA, OFDM, 전기신호를 보내는 기저대역변조 방식 등이 이 계층에서 활용하는 기술이다.

 

오늘은 app.py 작성하다가 축구할 때 되어서 급하게 TIL 작성하고 후다닥 도망간다.

주말에 하루 정도는 공부할 수 있겠지...? 흠