ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (네트워크)OSI 7 Layer
    Network 2020. 12. 1. 21:15
    반응형

    1. OSI 모델

    OSI 모델은 다양한 통신 시스템에서 표준화된 프로토콜을 사용하여 통신할 수 있도록 ISO에서 만든, 개념적인 계층 모델입니다.

     

    한국어로 된 고작 한 문장인데 헷갈립니다. 이해하기 어려운 단어들이 많이 있는데요. 천천히 알아가 보겠습니다.

     

    1. 1. 프로토콜 (Communication Protocol)

    프로토콜은 통신시스템(네트워크, 전송 시스템 등)의 여러 가지 집합들이 서로 정보들을 주고받을 수 있게 해주는 규칙입니다.

     

    여기서 서로 정보들을 주고받는 집합들에는 스마트폰, 컴퓨터 등 데이터를 주고받는 수많은 기기들이 될 것입니다. 

     

    그렇다면 서로 정보들을 주고받을 수 있게 해주는 규칙은 무엇을 의미할까요?

     

    정보는 컴퓨터나 스마트폰에서 주고받는 Data를 의미합니다. Data는 이미지, 텍스트 파일 등 모든 것이 될 수 있습니다. 즉 여기서 말하는 규칙은 '누가', '어떤 종류의' Data를 '어떻게' 주고받을 것인지 구분을 하는 것을 의미합니다. 편지와 같습니다. 편지봉투에는 발신자와 수신자의 주소가 적혀있고, 우표를 붙여서 우체국에서 전송이 가능하게 합니다. 이러한 것도 편지를 주고받는 규칙이라고 할 수 있습니다.

     

    그렇다면 이러한 규칙은 왜 필요할까요? 스마트폰이나 컴퓨터나 'Data'라는 단어는 똑같이 사용하는데, 뭐가 다른가요?

     

    컴퓨터의 Data라는 것은 기본적으로 CPU가 관여를 합니다. 모든 전자기기의 CPU는 다를 것이고, 당연히 서로가 서로의 방식과 언어로 데이터를 전송하게 되면 상대방은 이해하지 못할 것입니다. 예를 들어 A컴퓨터는 32비트, B컴퓨터는 64비트를 사용하는데 이러한 규칙 없이, 서로의 비트수로 데이터를 주고받는다면 이것을 어떻게 해석을 할 수 있을까요? 또한 Data들은 네트워크를 통해서 다른 기기에 전송이 되게 됩니다. 근데 이때의 Data들은 그저 전기적인 신호에 불과합니다. A 네트워크를 거친 데이터를 B 네트워크는 어떻게 이해를 할 수 있을까요? 

     

    또한 A에서 보낸 데이터를 B가 받았을 경우, 데이터의 손실이나 에러가 없이 잘 왔다는 확인을 A에게 어떻게 보낼 수 있을까요? 왜냐하면 B는 애초에 A가 어떤 데이터를 보냈는지 모르는 상태입니다. 이것이 멀쩡한 데이터인지 확인을 하려면, 데이터에 어떠한 장치를 마련해둬야겠죠? 

     

    즉 표준화된 규칙을 이용해서 서로의 데이터를 주고받는다면 이해하기 편할 것입니다. 표준화된 자료구조를 이용해서, 서로 다른 방식으로 데이터를 전송하더라도 중간에 표준화된 데이터로 바꿔서 보낸다면 문제없지 않을까요? 예를 들어 같은 한국어지만 친구들끼리만 사용하는 단어나 표현을 외부 사람들은 이해하지 못할 것입니다. 그렇기 때문에 누구나 공통적으로 사용하는 표준어라는 것이 존재합니다. 

     

    이러한 프로토콜은 어디에 이용이 될까요? 윈도우 PC에서 메일을 보냈을 때 아이폰의 메일 앱에서 받아서 읽지 못한다면, 그것은 정상적인 이메일 서비스가 아닐 것입니다. 이때 표준화된 프로토콜을 사용해서 아이폰에서도 윈도우에서 보낸 이메일을 읽을 수 있습니다. 

     

    1. 2. 네트워크(Network)

    Net + Work가 합쳐진 의미입니다. 말 그대로 그물망처럼 이어서 일을 한다는 의미인데요. 독립적인 장치들이 어떠한 영역 내에서 서로 통신을 할 수 있게 도와주는 통신 체계입니다.

     

    네트워크는 학교 컴퓨터실에서 컴퓨터끼리의 연결을 하나로 묶은 것이 될 수도 있고, 그렇게 묶은 학교와 다른 학교의 연결하는 것이 될 수도 있고, 국가와 국가를 연결할 수도 있습니다. 그리고 이러한 네트워크는 물리적인 장치에 의해서 먼저 묶이게 되고, 땅에 심겨 있는 케이블을 통해서 데이터를 주고받게 됩니다. 뉴스에서 해저에 심겨 있는 케이블을 상어가 뜯어먹어서 손상됐다는 뉴스도 간혹 나오곤 합니다. 그러한 것들이 모두 전 세계를 네트워크로 묶기 위한 장치라고 생각하시면 됩니다.

     

    이제 이러한 네트워크 구성을 7 계층으로 나눈 것이 OSI 7 Layer입니다.

     

    2. OSI 7 Layer

    OSI 7 Layer는 위에서 말한 OSI 모델을 7 계층으로 개념적으로 나누어 놓은 것입니다. 즉 네트워크에서 데이터를 주고받기 위한 개념적 모델이라고 생각하시면 됩니다. 

     

    2. 1. L1 (물리 계층, Physical Layer)

    가장 아래쪽에 존재하는 계층이며, 물리 계층(Physical layer)라고 합니다. 말 그대로 물리적인 장치들을 이용해서 네트워크를 구성하는데요. 

     

    조금 있다 살펴볼 L2인 Data Link에서 L1인 물리계층으로 데이터가 넘어올 때는 비트 스트림 단위로 넘어옵니다. 당연하게도 네트워크 통신에서는 0과 1로 이루어져 있습니다. 하지만 L1은 물리계층입니다. 즉 물리적으로 연결된 장치를 위해서 전기 신호로 변환을 해야 합니다. 우리가 컴퓨터에 랜선을 연결했다고 생각하면 됩니다. 즉 랜선이 랜카드와 연결이 되어 있고, 랜카드에서 이러한 전기 신호로 변환을 해줍니다.

     

    물리계층에서 사용되는 장비는 '허브'라는 것이 있습니다. 이는 네트워크에서 각각의 독립적인 장비들을 연결해주는 장치입니다. 앞서 네트워크를 간략히 소개드리면서 교실 내의 컴퓨터들을 묶는다고 말씀드렸는데요. 이때 필요한 것이 허브 장치입니다. 사실 많은 분들이 인터넷을 사용하며 다른 도시, 다른 국가의 사이트를 접속한다는 느낌을 잘 받지 못하실 것입니다. 왜냐하면 그냥 주소창에 입력만 하면 어떠한 검사나 제재 없이 그냥 접속이 되기 때문입니다. 하지만 이러한 도시, 국가 간에 존재하는 독립적인 노드(컴퓨터, 스마트폰 등)들을 연결하기 위해서는 소규모 네트워크끼리 묶고, 다시 네트워크끼리 묶고 하는 여러 단계의 과정이 필요합니다. 학교를 기준으로는 교실의 컴퓨터끼리 허브로 묶는 것이 가장 작은 단위의 네트워크라고 할 수 있습니다.

     

    허브는 마치 공유기처럼 연결 포트가 여러 개 있습니다. 이때 데이터가 들어오면, 연결된 모든 노드(컴퓨터)에 뿌려줍니다. 이를 브로드캐스팅(Broadcasting) 방식이라고 하는데요. 그 데이터가 필요 없는 노드는 버려 버립니다. 비록 버린다고는 하지만, 자신의 데이터가 맞는지 확인하는 불필요한 과정이 추가되기 때문에 데이터가 과도하게 많이 전송되면, 리소스가 낭비됩니다.

     

    2. 2. L2 (데이터링크 계층, Data Link Layer)

    데이터링크 계층은 L1인 물리 계층으로부터 데이터를 받아서 L3로 보내거나, 받아서 L1으로 보내는 일을 합니다. 사실 너무 당연한 이야기죠? 이는 물리적인 링크를 통해서 데이터를 신뢰할 수 있게 전송하는 역할을 합니다. 

     

    이때 서브 계층인 MAC과 LLC로 구성이 됩니다.

     

    MAC 주소는 전자기기의 주민등록번호 같은 것입니다. 해당 전자기기를 식별하기 위한 번호인데요. 우리가 이사를 간다고 해서 주민등록번호가 바뀌지 않습니다. MAC 주소도 마찬가지로, 어떤 네트워크 환경에서도 바뀌지 않습니다. 물론 임의로 바꿀 수도 있습니다. MAC 주소는 서로를 식별하기 위한 번호이므로 통신을 할 때 발신지와 목적지를 찾는데 중요한 역할을 합니다. 

     

    LLC는 두 장비 간 링크를 설정하고, 프레임(Frame)을 송수신하는 방식을 정합니다. 프레임은 아래에서 설명하겠습니다. 걱정 마세요.

     

    데이터링크 계층은 L3인 네트워크 계층으로 데이터를 전송할 때 프레이밍(Framing) 합니다. 이때 프레임(Frame)은 하나의 네트워크 패킷을 담는 컨테이너인데요. 이 프레임에는 전송할 데이터와 제어정보를 담고 있습니다. 프레임은 데이터링크 계층에서만 사용되며, 동일 네트워크 안에서 노드 간의 발신지, 수신지의 주소가 포함되어 있습니다. 이때의 주소는 각 노드의 MAC 주소가 됩니다. 

     

    이러한 프레이밍을 하는 이유는 데이터가 연속적인 열(Stream)로 넘어오기 때문에 프레임 단위로 기준을 잡기 위함입니다. 말 그대로 시작과 끝의 경계를 짓는 역할입니다. 이러한 열을 시작과 끝을 기준으로 나누어서 그룹화합니다. 

     

    또한 에러 제어도 합니다. 물리계층에서 넘어오는 데이터에서 발생할 수 있는 오류를 검출하고 수정합니다. 이때 오류를 가진 데이터는 재전송하게 됩니다. 이때 제대로 전송되지 않은 데이터를 재전송할 수 있는 것은 ACK(Acknowledgment) 신호를 이용합니다. 수신자 측에서 데이터를 잘 받았다고 보내는 확인 메시지 같은 것입니다.

     

    데이터링크 계층에서는 스위치라는 장비를 사용해서 해당하는 목적지를 향해서 데이터를 보내게 됩니다. 데이터링크 계층은 MAC 주소를 사용합니다.

     

    사실 이렇게 보면 허브와 아무런 차이가 없습니다. 차이점은 허브는 패킷을 받아, 복제해서 모든 데이터에 보내게 됩니다. 하지만 데이터링크 계층은 이미 MAC 주소를 알고 있습니다. 즉 해당하는 노드에만 데이터를 보낼 수 있습니다. 이를 '스위칭'이라고 표현합니다. 또한 허브는 모든 버스(Bus)들을 공유해서 사용합니다. 한 데이터가 목적지로 가는 동안에, 다른 노드는 데이터를 보낼 수 없습니다. 하지만 스위치는 독립적인 버스(Bus)를 가지고 있습니다. 즉 노드끼리 통신을 하는 와중에도, 다른 노드끼리 통신이 가능합니다. 

     

    Data Link는 로컬 네트워크의 데이터를 보내는 것에 집중을 합니다. 물리계층과 언뜻 보기에는 다르지 않아 보입니다. 그래서 TCP/IP 모델에서는 L4로 나누었고, 물리계층과 데이터링크 계층을 같은 것으로 보기도 합니다. 

     

    2. 3. L3 (네트워크 계층, Network Layer)

    드디어 로컬 네트워크를 벗어나서, 외부의 다른 네트워크로 데이터를 보낼 때 사용하게 됩니다. 즉 학교 컴퓨터끼리 묶고 있던 허브 혹은 스위치를 벗어나, 다른 학교 혹은 다른 국가에 데이터를 보낼 때 사용됩니다. 이때는 MAC 주소가 아닌, IP주소를 프로토콜로 사용하게 됩니다. 이때 IP주소는 네트워크상에서 컴퓨터나 스마트폰에 부여한 주소입니다. 즉 이 말은 MAC 주소와 다르게, 네트워크를 옮기면 IP주소도 바뀌게 됩니다. 집에서 사용하던 노트북을 카페 와이파이에 연결한다면, IP주소는 달라질 것입니다. 

     

    이렇게 서로 다른 네트워크끼리 연결하기 위해서, 라우터(Router)가 라우팅(Routing)을 하는데요. 기본적으로 네트워크끼리 연결을 하려면 IP 패킷을 보내야 할 것입니다. 패킷은 데이터의 전송 단위인데요. 우리가 네트워크를 사용하는 이유도 데이터를 보내기 위함입니다. 그냥 재미로 연결을 하는 게 아닙니다. 즉 이제의 문제는 이 IP 패킷을 어떻게 보낼 것인가입니다. 네트워크는 무수히 많을 것이고, 그만큼 경로도 다양할 것입니다. 

     

    이때 라우팅을 합니다. 이는 노드와 노드 사이에 최적의 경로를 찾아주는 것인데요. 즉 부산의 A 대학교 컴퓨터에서 서울의 B 대학교 컴퓨터까지 데이터를 전송하려면, 외부 네트워크를 거쳐야 합니다. 이때 어떻게 하면 데이터를 더 빠르고 효율적으로 보낼 수 있는지 길을 찾아줍니다. 마치 내비게이션 같습니다. 이러한 라우팅은 전송하려는 패킷에 포함되어 있는 목적지 주소(DA)를 이용합니다. 이때의 목적지 주소는 MAC 주소가 아니라, IP주소입니다. 왜냐하면 네트워크 계층에서는 IP주소를 기본으로 연결을 합니다. 

     

    하지만 만약에 모든 네트워크에 많은 데이터가 보내지고 있어서 혼잡 상태가 되면 어떻게 할까요? 이때는 데이터링크 계층에서 프레임 단위로 캡슐화 한 데이터를 여러 경로에 나눠서 보내게 됩니다. 그리고 수신자 측에서는 이를 다시 병합합니다. 경로는 많으니까, 굳이 한 경로를 고집할 필요는 없습니다.

     

    2. 4. L4 (전송 계층, Transport Layer)

    전송 계층은 데이터링크와 비슷하지만 조금 다릅니다. 데이터링크는 각 Host들 간의 논리적 통신을 담당합니다. 하지만 전송 계층에서는 전송 프로토콜을 이용해서 응용 프로세스 간의 논리적 통신을 담당합니다.

     

    이미 네트워크 계층에서는 외부 네트워크로 가기 시작했습니다. 즉 지금의 전송 계층에서는 각각의 Host들이 물리적으로 연결되어 있지 않습니다. 서로 각기 다른 네트워크에 속해 있으므로 논리적인 통신으로 메시지를 주고받아야 합니다. 

    이때의 논리적인 통신을 위한 전송 프로토콜에는 TCP와 UDP가 있습니다. 

     

    https://www.javatpoint.com

     

    2. 4. 1. TCP (전송 제어 프로토콜, Transmission Control Protocol)

    기본적으로 TCP는 네트워크의 장치들로부터 받은 메시지를 일정하게 나누어 패킷에 담아 전송합니다. 정확히는 서버에서 보낸 메시지를 장치, 즉 허브나 스위치 같은 것들을 통해서 나오게 되는데요. 그리고 이렇게 나누어서 보낸 패킷을 수신자 측에서는 다시 합쳐서 확인하게 됩니다. 그리고 이렇게 나누어진 패킷은 반드시 순서를 보장해야 합니다.

     

    TCP의 경우에는 신뢰성 있는 연결을 위해서 사용됩니다. 즉 속도가 조금 느리더라도, 반드시 메시지를 정확하게 끊기지 않고 보내야 할 때 사용하는데요. 이러한 것을 연결 지향형(Connection-Oriented)이라고 합니다.

     

    이러한 신뢰성 있는 연결을 위해서 3 Way - Handshake 방식을 사용합니다. 조금 생소합니다. 갑자기 악수를 3번 한다고 하네요?

     

    데이터를 주고받는 과정에서 3단계를 거친다고 생각하시면 됩니다. 클라이언트가 서버에 연결을 요청하는 SYN(Synchronize) flag를 보냅니다. 그리고 서버는 이 요청 데이터를 잘 받았다고 확인하는 ACK(Acknowledgment)와 클라이언트의 포트를 열어서 데이터를 받을 준비 하라는 SYN(Synchronize)을 함께 보냅니다. 즉 ACK + SYN을 서버 측에서 보내게 됩니다. 그리고 클라이언트는 포트를 열었다는 확인을 위한 ACK(Acknowledgment) flag를 보냅니다. 

     

    단순히 패킷을 주고받는 것이 아니라, "보내도 돼? 응 돼. 보낼게~ 응 받았어~"와 같이 아주 신중합니다. 이렇게 귀찮은 세 단계를 거치는 이유는 무엇보다 신뢰성입니다. 앞서 TCP는 연결 지향형 프로토콜이라고 말씀드렸습니다. 즉 귀찮은 세 단계를 거치더라도 확실하게 패킷을 주고받기 위함입니다.

     

    예를 들어 이메일 같이 수신과 발신에 조금이라도 문제가 없어야 하는 것은 TCP 프로토콜을 사용하게 됩니다. 조금 느리고, 과정이 있더라도 신뢰성 있는 연결을 위해서 필요합니다. 

     

    3 Way - Handshake

     

    하지만 종료를 할 때는 4 Way - Handshake라고 해서 4단계를 거치게 됩니다. 왜 그럴까요? 

     

    클라이언트가 종료해도 되냐는 FIN(Finish) flag를 보내고, 데이터를 받았음을 확인하는 ACK flag를 서버가 보냅니다.

     

    하지만 이때 3 Way처럼 종료해도 된다는 FIN flag를 함께 보내는 것이 아닌, 따로 보내게 되는데요. 그 이유는 서버에서 Buffer와 실행 중인 local application process를 확인하는 절차를 거칩니다. 서버 측에서 실행 중인 프로세스가 있는데 그냥 종료해버리면, 문제가 생길 수 있기 때문입니다. 이때 클라이언트가 FIN flag를 서버 측에 보내게 되면 데이터를 더 요청할 수는 없지만, 여전히 받을 수는 있는 상태입니다. 이 이유는 당연히 서버 측에서 종료하는 과정을 기다리기 위함입니다. 서버 측에서 더 이상 진행될 프로세스가 없다면, 마침내 FIN flag를 보내고, 클라이언트는 확인하는 ACK flag를 보냅니다. 그리고 서버는 이 ACK flag를 받고, 종료하게 됩니다. 

     

    4 Way - Handshake

     

    추가적으로 TCP는 헤더에 체크섬(Checksum)이라는 검사를 위한 필드가 존재합니다. 간단하게 발신자가 데이터를 16비트 워드 단위로 구분해서, 1의 보수로 변환합니다. 그리고 그 결과를 헤더에 실어서 보냅니다. 수신자 측에서는 받은 데이터를 똑같이 계산하여 일치하는지 확인합니다. 이때 값이 0이면 오류가 없고, 0이 아니면 오류가 있는 것으로 판단하여 재전송하게 됩니다. 

    2. 4. 2. UDP

    UDP는 TCP와 조금 다릅니다. 신뢰성과 완전성을 보장하지는 않지만, 빠르고 효율적인 데이터 전송을 위해 사용됩니다. TCP에서 사용한 Handshake를 사용하지 않고, 오류제어 기능도 없습니다. 

     

    UDP는 TCP 비해서 전송 속도가 빠른데요. 이러한 이유는 네트워크 간 연결을 완벽하게 하기 전에 패킷을 보내버립니다. 에러 검사도 하지 않습니다. 클라이언트로부터 요청이 들어오면, 잘 도착했는지 확인하지 않고 계속 보냅니다. 즉 빠르고, 반복적으로 많은 데이터를 계속해서 보내야 할 때 유리합니다. 하지만 이러한 점 때문에 중간에 데이터가 손실되거나 순서가 바뀌는 경우도 있습니다. 

     

    이러한 UDP는 실시간으로 빠른 요청과 응답이 필요한 곳에 필요합니다. 스트리밍 영상 서비스를 생각하면 됩니다. 영상 서비스는 이메일이나 대화처럼 신뢰성을 필요로 하지는 않습니다. 영상을 되감고, 앞으로 가고 하는 것을 생각해보면 이는 단시간에 많은 용량의 영상 데이터를 빠르게 보내는 것이 핵심일 것입니다. 

     

     

     

    2. 5. L5 (세션 계층, Session Layer)

    이제 세션 계층부터는 좀 더 애플리케이션, 프로세스에 가까운 계층입니다. 

     

    사실 세션이라는 것은 많은 분들이 익숙할 것 같습니다. 웹 프로그래밍을 하다 보면 로그인, 로그아웃에 필요한 기초적인 기능입니다. 이때의 세션을 네트워크에서는 세션 계층에서 담당합니다. 세션을 설정(Open)하고 해제(Close)하는 기능입니다. 

     

    이러한 로그인을 유지하는 것을 두 프로그램 간의 대화(Dialogs)를 한다고 합니다. 

     

    세션은 서로 다른 자원을 동기화하기도 합니다. 예를 들어 라이브 영상을 시청하고 있다면, 음성과 영상 소스가 함께 스트림으로 올 것입니다. 이때 영상과 음성을 각각의 세션으로 저장하는 것이 아니라, 같은 소스로서 합치게(Merge) 됩니다. 

     

    2. 6. L6 (표현 계층, Presentation Layer)

     

    각 응용프로그램마다 다른 데이터 표현 방식을 가지고 있습니다. 이를 하나의 통일된 표현 방식으로 변환하는 기능을 가지고 있습니다. 세션 계층에서 올라온 데이터는 사용자가 읽을 수 있는 것은 아닐 것입니다. 이를 L7을 위해 사용자에게 보이는 문장으로 변환해줍니다. 

     

    또한 암호화, 압축, 코드 변환 등을 합니다. 

     

     

    2. 7. L7 (응용 계층, Application Layer)

    사실 별 거 없습니다. 응용 계층은 무엇인가 한다기보다는, 사람이 웹 사이트에 접속을 하는 것을 도와주는 역할을 합니다. 

     

    HTTP(s)와 같은 프로토콜을 쉽게 사용할 수 있게 하는 응용프로그램들이 있는 계층입니다. 앞서 예로 든 이메일의 경우에도 올바른 데이터를 받아들였더라도, 사용자가 사용할 수 있는 응용프로그램이 있어야 합니다. 이때 사용하는 이메일 프로그램 같은 것들이 응용계층에 자리 잡게 됩니다. 웹 브라우저도 마찬가지입니다.

     

    기본적으로 응용계층에서는 두 가지의 서비스가 있습니다. DNS, WEB인데요. 

     

    만약에 A라는 사람이 구글에 접속하기 위해서 Google.com을 검색합니다. 그렇게 되면 DNS(Domain Name System)를 사용하게 되고, L4로 가게 됩니다. DNS는 구글 웹 사이트의 IP주소를 알아내기 위한 시스템입니다. 우리는 단순히 Google.com을 검색하지만 이는 머신이 읽을 수 없습니다. 머신이 읽을 수 있는 IP주소를 얻어서 변환해야 합니다. 왜냐하면 앞서 말씀드렸듯이 서로 다른 네트워크끼리는 IP주소로서 경로를 찾게 됩니다.

     

    이때 L4에서는 UDP 프로토콜을 사용하고 L3의 IP주소, L2의 MAC 주소를 실어서 서버로 요청을 보냅니다. 포트 번호는 53번입니다. 그렇게 되면 구글은 A에게 구글의 IP주소를 보내줍니다. 

     

    그리고 A는 브라우저를 이용해서 구글 웹 사이트에 접속하려고 합니다. 이때 WEB 서비스를 이용해서 HTTP(s) 프로토콜을 사용하게 됩니다. 그리고 마찬가지로 L4에서 TCP를 사용하게 됩니다. 기본적으로 HTTP에는 TCP 프로토콜을 사용해서 전송하게 되어 있습니다. 물론 이론적으로는 다른 것을 사용해도 된다고 합니다. 이때 TCP의 Port 번호는 80번입니다. 아마 웹 프로그래밍을 하다 보면, 톰캣을 사용할 때 많이 보셨을 것 같습니다. 즉 웹 서버가 제대로 작동하고 있다는 말입니다. 그리고 마찬가지로 각각 L3, L2에서 송수신자의 IP, MAC 주소를 실어서 보냅니다. 

     

    3. 수정 사항

    2020년 12월 5일

    내용 추가

     

    4. 참고 문헌

    www.sdxcentral.com/resources/glossary/transmission-control-protocol-tcp/

    www.techopedia.com/definition/9322/session-layer

    www.techopedia.com/definition/6006/application-layer

    www.youtube.com/watch?v=mGRClHHgNdk

    aws.amazon.com/ko/route53/what-is-dns/

    developer.mozilla.org/ko/docs/Web/HTTP/Overview

    www.ktword.co.kr/abbr_view.php?nav=&m_temp1=113&id=292

    반응형

    댓글

Designed by Tistory.