Network #2 Application Layer

김태준·2023년 4월 15일
0

Network Study

목록 보기
1/7
post-thumbnail

OSI는 7계층으로 더 세분화 될 수 있지만, TCP/IP 4계층 단위로 끊어 1달 간 네트워크 스터디를 진행하고자 한다.

한양대학교에서 진행하는 '컴퓨터네트워크' 강의를 참고하고 있는데, 온라인 강의에다가 칠판도 안보여서 집중이 잘 안되긴 한다🙄
< 참고 >
cf

✅ Base Termination

  • Node : PC 네트워크 상 연결된 장치
  • Host : 고유 IP 주소를 가진 Node
  • Hop : 한 노드에서 다음 노드간 거리의 단위
  • Protocol : 데이터 통신의 규약, 약자 끝에 P붙은 애들은 거의 다 프로토콜
  • Routing : 어떤 네트워크 안에서 통신 데이터를 보낼 때 최적 경로를 선택하는 과정
  • Router : 패킷 위치를 추출해 그 위치에 대한 최적 경로를 지정해 그 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치

🎈 Layer

Application Layer를 유저모드, 이외의 3계층을 커널모드로 생각하면 된다.
사실상 application layer를 제외한 나머지 계층들은 OS가 알아서 동작하는 구간
계층 별로 업무를 분담해 진행한다고 보면 된다.
예시로 경희대학교 주소 경기도 용인시 기흥구 덕영대로 1732로 팩스를 보낸다고 할 때,
전국에서 경기도 용인시 주소 (MAC address)를 찾는 과정 - Data Link Layer
기흥구 주소(IP address)를 찾는 과정 - Network Layer
덕영대로(Port)를 찾고 1732(Socket)에 도착하는 과정 - Transport Layer
팩스를 전달 - Application Layer

그 중 오늘은 Application Layer에 대해 알아보고자 한다.

  • 응용 계층이라 불리며, 메시지 단위로 전송을 진행한다.
  • email을 예시로 메시지에 헤더가 있고 데이터에 텍스트, 첨부 파일 등이 포함되고, 헤더에는 송신자 주소, 수신자 주소, 메일title, 날짜가 데이터 형태로 들어가 있다.

이 메시지가 Transport Layer로 내려가면 여러 패킷으로 잘려 나뉘어진다.

✅ Role of Application Layer

✔️ 응용 계층은 애플리케이션과 데이터를 주고 받기 위한 역할을 수행하는데, 서버가 이해할 수 있는 메시지(데이터)로 변환하고, Transport Layer에 전달하는 역할을 수행
✔️ 이때, 응용 계층의 여러 프로토콜이 사용되는데 웹사이트를 이용할 경우 HTTP 프로토콜, 파일 전송할 경우 FTP 프로토콜, 메일 보내는 경우 SMTP 프로콜, 메일 받을 경우 POP3 프로토콜을 사용
✔️ 네트워크에서 컴퓨터나 네트워크 장비에 붙여진 이름을 기반으로 IP주소를 알아내는 것을 name resolution이라 하는데 이를 위해 Application Layer에서 DNS 프로토콜을 사용
✔️ 즉 클라이언트에서 사용하는 애플리케이션과 서버에서 사용하는 서버 프로그램 간의 통신은 Application Layer의 프로토콜을 이용하며 각 애플리케이션에 대응되는 데이터를 전송

🎈 웹 서버의 구조

💯 WWW

✔️ WWW는 HTML, URL, HTTP 총 3가지 기술이 사용된다.
✔️ HTML은 웹 페이지에 문장 구조나 문자를 꾸미는 태그를 사용하여 작성하는 mark-up 언어로 제목이나 목록과 같은 문장 구조를 지정하거나 이미지 파일을 보여줄 때도 태그를 사용한다
✔️ 그리고 Hypertext를 작성하는 mark-up언어이다. 하이퍼텍스트란 문자와 이미지를 표시하거나 하이퍼링크를 사용하여 다른 사이트로 이동할 수 있다.
✔️ 클라이언트에서 서버로 요청이 이루어지면 HTML이나 이미지가 웹 서버에서 클라이언트로 데이터가 전송된다.

💯 HTTP

✔️ 클라이언트는 웹 사이트를 보기 위해 서버의 80번 포트를 사용해 HTTP 통신을 한다. 이 과정에서 클라이언트가 서버에 요청하는 것을 HTTP 요청이라 하고 서버에서 요청한 데이터를 반환하는 것을 HTTP 응답이라고 한다.
✔️ 과거 HTTP/1.0 버전에서는 요청을 보낼 때 마다 연결을 끊고 다시 연결을 수립해 요청과 응답을 받는 과정을 반복해 웹페이지가 느리게 보였지만 HTTP/1.1 버전에서는 keepalive라는 기능을 추가해 연결이 한 번 수립되면 데이터 교환을 마칠 때까지 연결을 유지하고 데이터 교환을 모두 끝낸 후에 연결을 끝내는 구조로 업그레이드 되었다. 단, 요청을 순서대로 처리하는 특징이 여전히 존재해 이전 요청이 길어지면 다음 요청 처리가 늦어진다는 단점이 남아있었다.
✔️ 이에 HTTP/2.0 버전이 나타났고 요청을 순서대로 보내지 않아도 되어 HTTP 통신을 더욱 최적화되었다.

🎈 DNS 서버 구조

✔️ DNS는 URL을 IP주소로 변환하는 서비스로 외우기 어려운 IP주소가 아닌 기억하기 쉬운 이름으로 통신할 수 있게 해주는 역할을 한다.
예시로, https://velog.io/@tae__juni 같은 이름을 사용해도 name resolution을 통해 IP주소로 변환하여 접속할 수 있도록 돕는 것이다.
예시를 좀 더 자세히 살펴보면 다음과 같다.

  1. https://velog.io/@tae__juni의 IP주소를 알려달라고 DNS를 요청한다
  2. DNS가 해당 도메인 이름의 IP주소를 클라이언트로 응답한다
  3. 클라이언트는 획득한 IP주소로 요청을 보낸다

✔️ 이후 요청을 받은 DNS서버가 해당 도메인에 대한 IP주소를 모를 경우 다른 DNS에 질의를 진행하고 DNS 서버는 전세계적으로 서로 연계되며 작동된다.
✔️ DNS 서버는 IP 주소를 요청할 때 UDP를 사용한다.
-> 속도가 빨라야 하고 많은 클라이언트를 수용하는 것을 필요로 함

profile
To be a DataScientist

0개의 댓글