2023. 1. 19. 17:39ㆍcomputer science
카카오톡과 같은 메신저 서비스는 어떤 Layer에 엮겨서 들어가느냐를 알아볼 것 이다.
카카오톡은 OSI 7Layer에서 이렇게 돌아가야 한다는 것이 있다.
Kakaotalk Install: 앱개발자가 예전에는 5, 6, 7 Layer까지 개발했다.
하지만 최근에는 상당히 고도화되어 7 Layer만 개발을 한다.
CoDec과 무관하게 개발할까? 아니다. 개발자들은 CoDec을 신경쓰면서 개발을 한다.
TCP Layer에서는 5, 6, 7 Layer를 Application Layer라고 한다.
OSI 7 Layer
7Layer Application Layer
사용자에게 편의성을 제공 (실체가 카카오톡 앱)
6L Presentation Layer
데이터의 표현, CoDec
5L Session Layer
사용자(누가 통신하는지를 관리) → Session ID: 홍채, 지문, 아이디 등...
전화번호를 Session ID로 사용할 수 있다고 하면 친구 A, 친구 B가 따로 있다고 하자, 내 핸드폰에 있는 정보를 가져올 수 있어야 한다.
그러기 위해서는 앱개발자가 필요하다.
앱개발자의 최종 목적은 사용자의 편의성을 제공하는 것이다.
실제로 카톡을 install하면 내가 쓸 로그인 ID를 물어볼 것이고, 전화번호, 이메일 주소 등을 물어본다.
카톡 install하면 카톡을 쓸 로그인 아이디를 물어볼 수 있고, 전화번호를 가지고 할 수도 있고,
이메일 주소를 사용할 수도 있을 것이다.
실제로 앱을 설치하는 사람한테 요구할 정보가 있을까?
카카오톡에서 어떤 방법으로 로그인을 할 지 요청할 것인데 그 정도는 보편화되어 있다.
PC에서는 카톡을 깔면 대화 가능한 명단들이 있는데 이것을 어떻게 불러왔을까?
내가 가지고 있던 핸드폰의 정보를 PC로 공유한다는 것이다.
친구 A를 찾는다면 5 Layer에서 찾는 것이다. A라는 친구의 전화번호, 이메일 정보를 필요로 할 것이다.
with phone No. "a" → (ANSI) 0110 0001
글자 a를 터치했는데 CoDec을 통하여 0110 0001이라는 숫자를 보내는 것이다.
*를 ANSI 코드로 표현하면 0100 0010이고, *를 터치하면 0100 0010(42)으로 CoDec을 할 것이다.
app →
Session Header | Presentation Header | 0100 0010 Data |
ANSI 코드로 만들었다는 것을 표시해주어야 한다.
Session 전화번호, 이메일 등을 안시코드로 변환하여 사용 L5_Header | 1111(ANSI) Presentation Header | 0100 0010 Data |
UTF-8: 0001
ANSI: 1111
XX: 0101
YY: 1010
4Layer Transport Layer
데이터 포팅(Port Number)
Charater(a, *)와 같은 경우에는 Layer 6로 압축을 한 다음에 데이터를 보낼 것인데
*와 같은 문자를 보낼때와 동영상을 보낼때 프로세싱을 똑같이 해서 똑같이 보낸다라는 것은 이상하다.
문자를 송신을 하고 수신이 거의 바로 가능하지만, 동영상을 송수신 하기 위해서는 동영상 데이터를 보내는데 시간이 지연된다.
서버의 입장에서는 문자와 동영상을 동일 서버에서 처리하는 것이 좋을까?
아니면 동영상과 문자를 다른 서버를 구축하여 처리하는 것이 좋을까?
문자는 Realtime service, 동영상은 Non realtime service로 서버를 구분해서 문자는 빠르게 보내고, 동영상은 천천히 보낸다.
즉, 문자와 동영상을 구분하는 것이 좋다.
서비스가 문자이면 포트 넘버 X 번, 동영상이면 포트 넘버 Y 번으로 구분을 할 수 있다.
인터넷과 같은 Variable size가 아닌 같은 bit로 데이터를 교환하는 시도가 시도된다.
비동기 전송 모드; ATM(Asynchronous Transfer Mode) 기법 만들다가 실패했다.
ATM 기법은 만들기가 어렵고, 고가의 장비가 필요하다.
더 빠르고 많은 서비스를 만들 수 있었지만 두 가지 이유때문에 무산되었다.
다양한 사이즈의 패턴이 길고 짧은 것이 반복하는 것이 네트워크에서 효율적인 문제가 발생한다.
그렇다는 것을 감안하면 카카오톡을 인구 4천 만이 사용한다면 기술적인 문제가 없이, 서비스가 문제없이 가동되려면 방법이 필요하다.
문자를 보내는 서비스와 동영상 서비스를 동일한 서버로 다루는 것은 문제가 있을 것이다.
데이터 포팅을 했던 Layer 4 기술이 들어간다.
카카오톡 서비스를 하면서 문자를 보내는 것과 이미지를 보내는 것과 음성 채팅을 보내는 것이 형태가
포트 넘버가 다르다는 것을 알 수 있을 것이다.
서버가 한대만 있다고 하면 OS에서 데이터를 관리할 수 있는 방법으로 프로세스를 생성한다.
다루는 데이터를 네트워크로 보내거나 받게 되는데 보내는 것은 문제가 없지만,
받은 데이터의 경우에는 네트워크로부터 흘러 들어오는 데이터는 무슨 데이터인지 알 수 없다.
포트 넘버가 몇번이면 문자, 또다른 숫자면 이미지, 동영상, 음성 등 구분이 될 수 있도록 만든 다음 각 포트에서
프로세스를 생성하고 데이터를 다루는 방법이 사용되고 있다.
카톡 송신자가 문자를 보내는 경우, 이미지를 보내는 경우, 음성 서비스를 보내는 경우 각각 서비스가 다를 수 밖에 없다.
Non realtime service인 동영상은 데이터가 엄청난 데이터를 가지고 있다.
하지만 문자는 Realtime 서비스의 형태를 가지고 있다.
서로 다른 특성을 가지고 있는 데이터를 동일하게 다룬다면 데이터 입장에서는 효율, 효과 성능이 떨어질 수 밖에 없다.
Realtime 데이터는 늦으면 의미가 없는 데이터가 되버린다.
버려질 데이터가 많아질 것이다. 데이터를 거의 동시에 받을 경우 음성 서비스를 제일 먼저 처리하고,
적당한 우선순위를 가진 동영상, 이미지 등 순차적인 방법으로 서비스를 구현할 것이다.
위 내용은 서버가 한 대일 때 경우이다.
4천만 국민이 사용하는 카카오톡과 같은 서비스 경우에는 서버를 한 대를 사용하지 않을 것이다.
동시다발적으로 서비스를 운영할 시에는 서버를 많이 둘 것이다. Service Provider들은 Server Farm을 구성한다. 서버를 여러 대 둔다는 의미이다. 특정 서버가 특정 서비스를 담당하게끔 한다. 그러면 네트워크로부터 흘러들어온 데이터가 문자라면 문자를 담당하는 서버에게 그것을 전송하고, 마찬가지로 동영상 음성 등을 각각 담당하는 서버를 두고 처리하게끔 하는 경우가 많다.
서비스의 특징에 따라서 Gateway Server들의 서비스를 담당하는 Switch 역할을 한다.
보내는 송신자가 문자를 보내느냐, 동영상을 보내나, 이미지를 보내느냐에 따라서 서비스를 다루는 형태가 다를 것이다.
포트넘버도 각각 다를 것이다. p0: voice port number: 10080, p1: character 포트넘버: 10001, p2: png 포트넘버 10100, p3: avi 포트넘버 11000 등 (서버 한 대일 경우)
서버가 한대면 이것들을 다 처리하니깐 힘들어 질 것이다.
많은 데이터를 취하는 것에 많은 것을 준다.
서버가 여러 대일 경우에는 Service Provider들은 Server Farm을 운영한다. 카톡회사 안에는 여러 대의 서버가 있을 것이다.
수천만을 동시에 서버에서 관리해야하기 때문이다.
송신자가 Server Farm에 진입할 것이다. 그때 경계선에 존재하는 장비를 Gateway라고 할 것이다.
게이트웨이 이때 게이트웨이는 어떤 역할을 하느냐면 게이트웨이는 포트넘버를 쳐다볼 것이다.
voice service일 경우에는 10080 포트넘버에 보낼 것이다.
10001에는 문자데이터가 들어오면 보낼 것이다..
Realtime Service | Delay Sensitive Service (딜레이에 민감한 서비스) |
Non Real Time Service | Lose Sensitive Service (Loss에 민감한 서비스) |
Port Number에서 받으면 수신자에게 보낸다는 것이다.
지금의 얘기는 네트워크 측면에서 송신기와 수신기 입장이 아닌 네트워크 측면에서 Port Number를 보고
Gateway가 Port Number를 보고 Port Number 각각에 할당을 주는 것이다.
서버 하나 하나를 공정하는 것이지만, 음성를 담당하는 프로세스, 이미지를 담당하는 프로세스 등등
서버가 한 대일때랑 여러 대일때랑 비슷하지만 다르다.
서비스가 다르기 때문에 데이터를 보내서 동일하게 서비스를 하는 것은 옳지 않다.
Server Farm에 있는 서버들이 Load Share를 한다는 것이다.
서버담당자는 만약 11000이 40% 데이터를 담당하면 Load share를 해서 20% 20% 나눠서 서비스를 담당하도록 한다.
Gateway는 서비스의 형태에 맞게끔 그 특성에 맞는 서버에게 데이터를 Forwarding하게 하는 것이다.
Port Number를 보고 Forwarding하는 것이고, Port Number는 Layer 4의 특성을 가지고 있는 것이고 Layer 4의 정체성이다.
그래서 Gateway를 L4 스위치라고 부르기도 한다.
L4 스위치라고 하는 게이트웨이 장비가 중간에 등장한 것이다.
이때 일반적으로 데이터 네트워크 서비스의 형태는 전형적인 OSI 7Layer에서 Network Layer 이하단에만 존재한다면
Endstation에만 존재하는 것이고, Service Provider가 존재한다면 네트워크 특성을 고려하거나 Load Share를 할 때는
독자적으로 L4 스위치를 운영할 수 있다.
L2, L1 스위치는 원래 존재하는 것인데 짖꿎은 면접관은 면접을 진행할 때 L4 스위치를 들어봤습니까?라는 질문을 할 수 있다.
그것은 Gateway이다.
어떤 서비스에서 L4 스위치를 많이 사용할까? Networking이 많아야하고 Load Share를 필요로 하는 서비스가 진행될 것이고,
보내지는 데이터의 특성들이나 데이터 자체들의 성능이나 성격에 따라 달리 처리해야하는 분야에 사용할 것이다.
메신저 서비스, 게임 서비스 등을 사용할 것이다.
중간에 한 번 데이터를 거른다면 속도에 문제가 생길 것이다. 하지만 게임은 워낙 접속하는 곳이 많다.
그렇기에 거르는 작업이 필요하다.
게임회사에 가서 게임 개발자가 되고 싶다는 사람이 있을지 모른다.
엔지니어는 예를 들어 몬스터가 어디서 튀어나올지 모르게 프로그래밍을 하려면 랜덤 시드를 사용해야 한다.
캐릭터가 360˚ 돌 수 있다면 1/360의 랜덤시드를 만들면 될 것이다.
클래스 멤버함수를 만들어 놓고 거기서 동작되는 조건들은 클래스 Number1, Number2... 라고 하면, 그것을 상속받아서 처리해야 한다.
더 능력있는 개발자가 되려면 Network Level에서 Load Share를 해서 프로그래밍이 가능하면 엔지니어 레벨이 OS 레벨에 가까운 레벨의 프로그래머가 될 수 있는 것이다.
주어진 함수를 이용해서 프로그래밍이 가능한 사람과 함수를 만들어 내는 사람은 연봉의 차이가 있을 것이다.
함수를 사용하는 사람은 4천 함수를 제공하는 사람은 5천 함수를 제공하고 소프트웨어의 퍼포먼스를 올린다면 6천 줄려고 할 것이다.
난수값을 어떻게 줄까하는 알고리즘을 만들 수 있다면 이론적인 것이 붙어있는 알고리즘을 만들면 연봉 8,9000천을 줄 수 있을 것이다.
우리가 의사가 공부하는 만큼 투자해서 공부하면 연봉이 훨씬 쎄고 자유도가 높을 것이다.
Layer 3 Network Layer
내가 a라는 데이터를 보내기 위해서 Layer 6에서 ANSI 코드를 01100001로 바꾸었다면 친구A 데이터를 붙여서
Port number 10010 | Session ID 친구A 01012345678 | 01100001 |
이러한 전송단 하나를 Segment라고 할 것이다.
이러한 하나, 하나를 패킷이라고 하는 경우가 있는데 Segment이다.
Source와 Destination의 IP address를 알면 되지만, MAC address로 원홉간의 MAC address를 알아야 한다.
Layer3의 주된 역할은 데이터 전달이다.
전달의 범위는 E2E이다.
이때 사용되는 주요한 정보는 IP address이고 이때 필요한 것이 라우팅이다.
존재 목적은 데이터 전달이고, 그 목적을 달성하기 위해서 필요한 것이 라우팅이다.
Layer3의 주된 역할은 데이터 전달이고, 누구에게 전달하느냐면 end에서 end로 가는데 그때 필요한 게 라우팅이고,
라우팅을 하기 위해 필요한 장비는 Router(라우터)이다.
한글로 된 책에 루터라고 적힌 책을 봤다. 근데 이것을 Route 루트라고 발음하는데 r이 붙어서 루터라고 하는 것인가
목공할때 두꺼운 판자에 홈을 따는 장비를 루터라고 한다.
라우터에서 파생된 단어이다.
이거를 쓴 사람을 아는데 루터라고 하는 사람은 그 책의 저자말고는 없다.
라우터는 어떤 장비를 라우터라고 할까?
라우터의 주된 역할은 라우팅이다.
라우터도 IP address를 가지고 있어야 한다.
반드시 가져야할 세가지 조건은 Routing Algorithm, Routing Table, Store & Forwarding
최소한 이 세가지 기술을 가지고 있어야지 Router라고 할 수 있다.
Routing Algorithm은 사람이 계산해서 답을 찾을 수 없다.
자동차에 다는 네비게이션이 Routing Algorithm을 이용해서 만들어진 것중 하나의 예이다.
Routing Table은 Memory이다. 어느길로 가면 최적이다.라는 것을 계산할 수 있는 것을 포함한 Memory이다.
Speed를 계산하는 것이 젤 어렵다.
수십 테라비트의 전송속도를 가지고 보내는 것이다. 10^9의 펄스를 계산하는 것이다.
유선에서도 1gbps도 어려운데 tbps면 10^12이면 거의 빛의 속도이다.
에러 없이 보내는 것이 중요한데 store & forward를 통해서 보내는 것이다.
라우터는 굉장히 기술 집약적인 장비이다.
Layer3를 붙여줄라면 누구의 IP address를 붙여야 할까? end에서 end까지의 ip address가 필요할 것이다.
송신자인 ip address와 수신자의 ip address를 붙여주어야 할 것이다. 보내는 쪽의 ip address는 내 것이니깐 내 ip address를 구할 수 있다.
수신자의 IP address를 어떻게 가져올까? 도메인 네임 서버를 이용해서 나올 것이다.
카톡에서는 어떨까 카톡은 private 서비스인데
도메인 네임 서버는 public 서비스에서 DNS서버를 사용한다.
www.naver.com 와 같은 DNS 서버
네이버
네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요
www.naver.com
카카오톡 서비스를 하는데 DNS 서비스를 해주어야 할까? 그럴 필요는 없다.
채팅 서비스는 개인 대 개인으로 하는데 DNS 서비스를 해주어야 할까? 그럴 필요는 없다.
DNS 서비스를 하기 위한 비용을 내면 DNS 서비스를 해줄 수도 있다. 하지만 그렇게 하지 않는다.
상대방의 IPaddress를 어떻게 가져올까? Session ID를 이용해서 가져올 것이다.
카카오톡을 install할 때 답이 있다.
카카오톡을 install하면 등록이 필요할 것이다. 등록할 때, 무엇이 생기냐면 문자에 해당하는
Port Number는 몇 번이다.라고 하는 것이 기본적으로 숨어있다.
바꿔서 이야기하면 깔 때 이미 Port Number를 핸드폰에 딱 깔려있어서 붙어있는 것이다.
Port Number가 다운 받을 때 같이 데이터가 내려오는 것이다.
IP address와 관련된 것은 Server IP가 앱을 install 할 때 숨어있을 것이다.
카카오톡을 install하면 Port Number나 Server IP가 저장이 될 것이다.
등록을 할 때, Login ID가 만들어지거나, 전화번호가 만들어질 것이다. 그리고 이메일 주소가 있을 것이다.
이런 것을 종합적으로 Session ID라고 할 것이다.
그렇게 Session ID를 구하고 등록을 어디에 할까? 서버한테 한다.
사용자의 Session ID 등록은 서버한테 한다. 서버에게 나의 로그인 정보를 서버에 등록하면 OSI 7Layer를 탈 것이다.
그러면 서버의 주소를 알아야하는데 서버의 주소는 프로그램을 다운받을 때 서버의 IP address를 같이 심어 놓는다.
어떤 station 하나가 등록을 한다고 하면 서버에 이메일 아이디, 전화번호 등을 등록할 것이다.
서버의 IP address를 알고 있을 것이니깐 본인의 IP address를 같이 보낼 것이다.
어떤 station 하나가 등록을 한다고 하면 서버에 등록한다고 하자, 그러면 무엇을 등록하느냐면 로그인 아이디를 등록할 것이고, 전화번호를 등록할 것이다. 그리고 이메일 주소를 등록할 것이다.홍채, 지문, 보이스 등등 집어넣을 수 있지만 딱 필요한 것으로만 로그인 아이디를 사용할 수 있을 것이다.
PC가 일반적으로 DNS 서버를 이용할 떄 DNS 서버에게 물어본다. DNS 서버의 IP address를 보면 DNS 서버의 IP address를 입력하는 칸이 있고 자동으로 다운받게 프로토콜로 만들어져 있을 것이다.
그러면 결론적으로 DNS 메커니즘과 유사하게 만들어내려면 IP address를 만들어내야 한다. L5에서 친구 A한테 보낸다고 선언을 한다면 IP address를 가져올때 친구 A의 Session ID가 필요한데 전화번호를 사용할 것이다. Session ID를 알면 IP Address를 Server에 물어볼 것이고 친구 A의 Session ID을 뒤적거리고 IP Address 몇번을 쓰는지 답을 주면 본인의 IP address가 수신자의 IP address를 알아왔을 것이다. 그러면 L3 L4 L5 L6 를 다 붙여서 가져올 것이다.
L3에서의 전송단위를 패킷이라고 한다.
2Layer Datalink Layer
L2에서의 전송 단위를 프레임이라고 한다.
다 엄격하게 구분하여 사용하는데 실력있는 엔지니어도 그냥 모든 Layer에서 패킷이라고도 한다.
국제 표준 전문가인 사람들은 엄격한 사용을 하지만, 전부 국제표준을 하는 것은 아니기때문에 패킷이라고 잘못 사용할 수 있다. 패킷이라고 한다고 해서 실력없다고 할 필요는 없다.
Layer 2의 주된 목적은 데이터 전달이지만 Layer 3와 다른 점은 원홉 특성을 가진다는 것이다르다.
Layer 3는 반대로 end to end 특성을 가진다.
Layer 3 프로토콜을 타면서 원홉으로 이루어질 수도 있다. 하지만 e2e면 라우팅을 타지 않아도 e2e로 되기도 한다.
그냥 특성이 그렇다고 이해하면 된다.
이때 중요한 정보는 MAC address일 것이다.
이더넷 레벨에서 사용하는 프로토콜이다.
MAC address 말고도 다른 용어로 사용하지만 대표성을 띄는 언어이다.
통신에 참여하는 디바이스의 ID, 디바이스의 고유 식별자 이런식으로 사용되는 address의 개념을 사용하고 있는 유일한 식별자의 개념으로 사용되는게 MAC address이다.
Layer 2 전용 프로토콜에서 특정 기기에서 단 하나의 구분자로 사용될 수 있는 ID를 MAC address라고 한다.
전 수업떄도 배웠듯이 삼성 공장에서 출고될 때 다 똑같은 스마트폰처럼 보이지만 단 하나가 다른데 그것이 MAC address이다.
그 다음에 전화번호를 붙일 때 MAC address에 전화번호가 무엇인지 붙이는 것이다. 모든 통신기기의 기본 디바이스 정보가 되는 것이 MAC address이고 하드웨어 붙이는 다른 하드웨어와 구분하는 것이 MAC address이다.
MAC address가 언제 사용되느냐면은 원홉의 데이터를 전달할 때 사용된다.
Layer 2 입장에서는 원홉만 책임진다.
Source와 Destination의 관점에서는 서로의 IP address만 알면 되지만 MAC address는 원홉간의 MAC address를 알아야 한다.
원홉 다음의 MAC address를 알기위해서 필요한 프로토콜이 ARP이다. 주소를 해결해주는 프로토콜이라는 뜻이다.
L2의 MAC address를 찾아주는 프로토콜이다.
ARP는 동작을 할 때 단독으로 동작을 하지 않는다. 반드시 IP address와 협력하여 동작을 한다. 이때 IP address는 Destination address 찾는 MAC address는 무슨 address를 찾는 것일까? Destination 방향으로 가는 MAC address를 찾고 협력할 것이다.
Layer 3는 어느 방향으로 가던지 Source에서 Destination까지의 IP address를 전달해주면 되는 것이다.
예를 들어 어느 순간 포크레인이 와서 전선을 끊어먹었다고 치자, 그러면 하늘색으로 보내기로 결정한 것이다.
이때 ARP는 어떻게 할까? 하늘색 루트로 가는 MAC address로 각각에 맞게 전달하는 것이다.
ARP는 라우팅 알고리즘이 돌아갈 때 같이 돌아가는 것이다.
MAC address → ARP까지 돌고나면 Frame이 완성이 될 것이다.
Layer1 Physical Layer
Layer 1에서 역할만 남았는데 Layer 1에서는 1또는 0 으로 하드웨어의 처리를 하는 것인데
Format은 전압 Meaning 5V:1 0V:0 Timing은 1GPS로 보내기로 하면
반전을 하는데 1GBPS로 동작하는 형태로 보내면 Layer 1에 프로토콜들이 어디에 의존을 하냐면 가지냐면 Layer 2에 의존성을 가진다.
Layer 2가 Layer 1을 지배하는데 Layer 2는 원홉 통신을 한다.
와이파이로 통신하자고 하면 이더넷 Layer 1 프로토콜끼리 다를 수 밖에 없다.
Layer 2가 Layer 1을 장악했기 때문이다.
Layer 1는 Layer 2와 밀접한 관계를 가지게 된다.
Layer 3는 Layer 2는 밀접하고 Layer 1과는 밀접하지 않다.
Layer 4는 Layer 3가 밀접하고 Layer 2와 밀접하지는 않는다.
우리가 통신을 할 때 어떻게 하느냐면 Source가 있고, Destination이 있으면 중간에 Server가 있다.
SNS의 경우에는 오프라인으로 등록하는 경우가 없고 온라인으로 등록할 것이다.
A라는 사람의 Session ID, IP Address가 들어갈 것이다.
Layer 4는 프로그램 깔 때 기본으로 깔고
각자가 쓰는 IP Address로 Layer 3를 구성할 것이다.
Layer 7, Layer 6, Layer 5, Layer 4까지는 Catch가 가능하다.
하지만 Layer 3로 가면 상대편의 IP Address를 알기 어려워니 Server에 물어볼 것이다.
서버의 IP Address에게 물어보면 상대방의 Session ID, IP Address를 알 것이기 때문에
Sender에서 알고 있는 것처럼 알 수 있다.
중간에 서버를 거치면 어떤 문자를 받는지 체크할 수 있을 것이다.
하지만 그렇게 하지는 않을 것이다.
단점으로는 사용 중에 보내는 사람들이 여러명 있다면 또다른 천명, 이천명에게 보낸다면 서버가 감당할 수 있을까?
서버를 거쳤다가 relay를 하는 과정이라면 감당하기 어려울 것이다.
그렇기 때문에 Server Farm을 만들어 데이터를 종류별로 분류하는데 분류하는 장비를 L4 스위치라고 한다.
OSI 7Layer에 어떤 기술이 들어가는지 구체적으로 알지는 못해도 www.naver.com을 치면 OSI 7Layer를 어떻게 이해동작하는 지 아는 것이 중요할 것이다.
서버 프로그래밍을 한다면 등록된 Session ID를 가지고 데이터를 유지 관리하는 것 A가 Session ID, IP address를 무엇을 쓰는지를 알아야 한다.
그룹 채팅을 어떻게 할까?
그룹 채팅을 보내는 사람이 A라는 친구, B라는 친구, C라는 친구에게 어떤 데이터를 보내겠다고 하면 A, B, C 모든 친구들에게 동일한 문자를 보내야 한다.
줌같은 통신을 한다고 생각하면 화자가 있을 것이다. 화자의 동영상을 연두색으로 표시해준다. 이런 것이 Layer 7의 역할일 것이다.
그때 사용하는 동영상 Codec과 그룹 관리는 누가 문자를 보냈는지 Session ID로 관리한다.
전체적인 맥락이 어떻게 되는지 아는 것이 필요하다.
이렇게 데이터를 보내고 받을 때 사용되는 규칙들이 국제표준이고 국제적으로 통용이 되는지 IP address가 국제표준규약을 사용해 만들어지는 것이면 Timing, Meaning, Format 이것들을 지켜주면서 개발을 해야 한다.
카톡이 아닌 곳에서 이런 데이터베이스를 사용할 수 있을까? 못쓸 것이다. 특정 업체에서만 사용할 수 있도록 했을 것이다..
OSI 7 Layer의 사용방법은 설명을 마무리했다.
Layer 2 / Layer 3 관점에서의 네트워크의 차이점
Layer 2 Network란? 단어를 보면 OSI 7 Layer에 익숙해져있기 때문에 Layer 3의 네트워크 계층이라고 생각할 수 있다.
그렇게 엄격하게 구분하는 사람은 없다.
전공인 사람이나, 자기의 전문분야로 하는 사람은 차이점을 명확하게 알기 때문에 구분을 한다.
네트워크에서의 프로토콜 측면 층을 Protocol Stack이라고 했다.
연결 상태를 포함해서 네트워크라고 한다. 통신에서 네트워크는 연결체의 집합을 네트워크라고 한다.
그 안에서 돌아가는 프로토콜도 네트워크라고 할 수 있다.
OSI 7 Layer는 Protocol Stack이다.
네트워크라고 얘기하는게 프로토콜이 사용된다. 상호간의 약속이 사용된다. 둘만 있어도 그룹은 그룹이다.
뫼비우스의 띠처럼 시작도 끝도 없는 상태로 들리지만, Layer 2로 구성되는 네트워크, Layer 3로 구성되는 네트워크로 구분해볼 것이다.
원래 네트워크는 두 가지로 나누어진다. 네트워크라고 얘기하는 것은 통신에 사용되는 모든 디바이스 집합체라고 하는데
Layer 2라고하는 프로토콜로 네트워크로 형성되는 그 특징은 무엇일까?
모든 통신들이 원홉의 개념, 원홉의 통신으로 이루어진다.
기본적으로 원홉관계에 있다고 해도 80퍼센트는 맞다.
대표적으로 어떤 것이 있을까? WLAN
원홉으로 네트워크가 구성된다고 했는데 바꿔서 얘기를 하면
데이터 처리를 위한 프로토콜이 만들어져야 의미를 가진다.
1/0 데이터 처리를 하려면 Layer 1만으로도 가능하지 않을까?
- 5V:1 0V:0로 해서 할 수 있지 않을까?
- 근데 왜 L2까지 쓸까?
원홉 관계의 여러 개의 디바이스가 있는데 디바이스를 구분하기 위해 Layer 2까지 필요한 것이다.
MAC address로 구분한다.
데이터를 다 송신하면 다 수신받는다. Layer 2에 있는 애들은 데이터를 다 수신받는다.
일반적으로 이야기 한다면 Layer 2 network라고 하면 Broadcast 영역에 있다.
그 또한 어떤 느낌이냐하면 원홉의 느낌이다.
느낌이라고 하는 이유가 뭘까? 굉장히 찝찝하다. 다이렉트로 보내는 방법이 있지만, WIFI와 같은 Layer 2 프로토콜은 송수신이 있긴하지만 중계를 위한 송수신을 달리 한다. 직접적으로 줄 수 있다. 하지만 조작이 필요하다.
프로토콜 상에서 제공하니깐 Access Point를 거치는 것을 기본으로 한다. 그래서 AP를 중계기라고 한다.
이런 것 처럼 중계기 없이 왔다갔다 하는 아래 그림을 보면 된다.
내 것이면 받는다. 그러다가 반응하지 않는다.
No response한다.
위 그림은 Infrastructure가 구축된 상태에서 데이터 통신에 해당하고
아래 그림은 Infrastructure이 구축되지 않는 상태에서의 데이터 통신이고,
Adhoc이라고 자기들끼리 나름대로 구축하는 것을 말한다.
Layer 2 프로토콜만 써서 구축하면 어떻게 될까?
→ AP를 거칠 수 있다.
우리가 많이 쓰는 Layer 2 프로토콜은 무엇일까? 블루투스이다.
블루투스로 뭔가 보낼때 수신하는 것을 정해놓고 보낸다.
adhoc을 옛날에 보면 infra없이 통신병을이 들고 있는 것이다.
Layer 2는 L2 디바이스, 프로토콜로 구성되는 것을 말한다.
데이터를 보내면 데이터를 Broadcast 형태로 다 받아보는 영역이 존재하게 된다.
매체를 공유하면 Layer 2에서는 Logical Link가 형성되어야 한다.
특정 MAC address를 달고 데이터를 보내면 데이터가 도달하는 영역이 어디까지 일까?
→ 대표적인 것이 ARP다.
Broadcast할 것이다. 그게 어디까지 진출할까? Layer 3까지 도달하는 있을 만큼만 간다. L3가 없으면 해석을 못한다. Layer 3를 사용하지 않고 도달할 수 있는 영역이 Layer 2이다. 그런 것이 원홉이 아니다. 라는 말이 나올 수 있다.
L2 Switch가 있고, Bridge가 있다.
원홉통신을 한다고 했는데 중계하는 기능이다. 원홉을 계속 유지할까? 그것은 아니다. L2 프로토콜이라고 하는 것이 네트워크를 건너가서 할 수 있게끔 하긴 한다.
예를 들어서 E10, E8-10 예시
단일 네트워크로 보는 경우
- Layer 2의 동일 프로토콜을 쓰기 때문에 단일 네트워크로 봐준다.
- 네트워크를 관리하는 사람이 동일한 관점으로 관리해주는 경우에 단일 네트워크로 봐준다.(도메인이 같은 도메인이 있고)
어떨 때 필요없게 되냐면 Layer 3의 라우팅기능이 필요하지 않을 때, 필요없게 된다.
동일한 네트워크 관리자인데 Layer 2 프로토콜이 다르면 단일망으로 보지 않는다. 이럴 때는 단일망, 복합망이라는 단어를 사용하지 않고, Homogeneous Network(같은종; 동종), Heterogeneous Network(다른종; 이종)라고 한다.
Layer 2 네트워크를 구축한다고 하면 동일한 프로토콜을 쓴다는 것을 전제로 한다.
같은 프로토콜을 사용하면 동종망이라고 하고, 다른 프로토콜을 사용하면 이종망이라고 한다.
하지만 꼭 동일한 프로토콜을 써야할까? 그것은 아니다. Layer 2 네트워크이면서 Homogeneous Network인지 Heterogeneous Network인지 구분이 되는 경우가 있다.
Bridge와 L2 Switch의 차이가 뭐냐?
그림에는 두 개의 네트워크만 그렸는데 L2 Switch는 32개까지 있을 수 있다.
넘어갈 때 프로토콜을 바꿔주어야 하는데 그러한 과정을 interworking이라고 한다..
그럼에도 불구하고 L2 switch의 키를 뭐라고 하면 interworking을 하면 MAC address가 어디있는지 본다.
MAC address를 표적으로 해서 던진다. 있는 쪽으로 보내고 없는 쪽으로는 보내지 않는다.
그 포트에 있는 애들은 원홉관계로 다 받는다.
동작, 수신은 MAC address가 있는 애만 하고, 다른 애들은 반응하지 않는다.
MAC address가 있는 쪽으로만 Forwarding한다.
다른 쪽에 있는 것은 L2 Switch가 알아야 하는데 형광팬으로 칠한 쪽은 안던진다.
Broadcast는 불특정다수가 모든 데이터 수신을 받는 것인데 Broadcast이기 때문에 데이터를 다 보내야 한다.
L2 스위치가 아닌 브릿지라면 어떻게 될까?
스위치는 Destination을 지정해서 Forwarding하는 것이고 브릿지는 Forwarding을 하지만 방향성을 지정하지는 못한다.
브릿지는 MAC address가 어디 있는지는 모른다. 예를 들어서 브릿지 기능이 필요하다고 하면 네트워크가 많아지면 스위치를 쓰고 1개 있는데 확장정도만 하고 싶다면 브릿지를 사용한다. 프로토콜이 다르다면 브릿지를 쓰기는 어렵다. 일반적인 브릿지들은 Homogeneous(동종; 단일망)일 때 사용한다.
브릿지는 확장 기능이 있고, 네트워크의 구분이 없다. 스위칭 기능은 하지않고 다리를 건너는 기능만 하게 해준다.
버스 타입으로 네트워크가 구축된다고 하면 메모리에 기억하게 한다. address Learning이다. 즉, 주소를 기억하게 한다.
브릿지와 스위치의 가장 큰 차이점이 무엇인가?
L2 Switch는 Destination을 지정해서 Forwarding하는 것이고, 브릿지는 address Learning 기술이다.
L3 Network(Internet-based) InterNetwork Protocol의 약자가 IP이다.
우리가 지금 사용하고 있는 인터넷은 모든 것은 인터넷이다. 그러니깐 단일망이다.
인터넷의 탄생배경은 서로 다른 하드웨어로 구성된 네트워크로 인한 의존성을 제거하기 위해 탄생된 네트워크이다.
하드웨어로 인한 Dependency는 하드웨어의 independent한 네트워크를 구축하기 위해 TCP 4계층에서 네트워크 아래는 하드웨어로 보인다. Layer 2는 이종망이다. end to end 데이터 전달이 Layer 3이다.
L3 네트워크는 어떤 특징을 가질까?
Layer3는 하드웨어의 independent 원홉에 막히지 않는다. Layer 2가 달라지건 몇 개이건 간에 건너건너 갈 수 있게 말한다.
L3 Network엔 라우터가 들어간다. 라우터는 L2에서의 interworking 기능도 가질 수도 있다.
기술적으로는 Layer 3가 어렵고 이론적으로는 Layer 2가 어렵다.
Layer 3의 특징은 단일망이고 원홉에 막히지 않고 투홉, 쓰리홉 등 건너건너갈 수 있다.
network와 network간에 : inter
interworking 네트워크와 네트워크간에 사용되는 기능
'computer science' 카테고리의 다른 글
전송 계층 (0) | 2023.01.19 |
---|---|
데이터링크 계층 (0) | 2023.01.19 |
네트워크 계층 #2 (0) | 2023.01.19 |
네트워크 계층 #1 (0) | 2023.01.19 |
네트워크와 인터넷 (0) | 2023.01.19 |