HTTP와 관계가 깊은 프로토콜[IP/TCP/DNS], URI와 URL

WOOK JONG KIM·2023년 1월 6일
0

Http&Network

목록 보기
2/12
post-thumbnail

IP

네트워크 층에 해당됨

인터넷을 활용하는 거의 대부분의 시스템이 IP를 이용

IP의 역할은 개개의 패킷을 상대방에게 전달하는 것

패킷을 상대방에게 전달하기 위해서는 여러 요소가 필요
-> 그 중에서도 IP주소와 MAC(Media Access Control Address)라는 요소가 중요

IP 주소는 각 노드에 부여된 주소를 가리킴, MAC 주소는 각 네트워크 카드에 할당된 고유의 주소
-> IP 주소는 MAC 주소와 결부됨
-> IP 주소는 변경이 가능하지만 MAC 주소는 변경 불가


ARP(Address Resolution Protocol) : 주소 결정 프로토콜

IP 통신은 MAC 주소에 의존해서 통신을 함

같은 랜선에 있는 경우가 아니라면, 여러 대의 컴퓨터와 네트워크 기기를 중계해서 상대방에게 도착
-> 중계하는 동안 다음으로 중계할 곳의 MAC 주소를 사용하여 목적지를 찾아감
-> 이때 ARP라는 프로토콜 사용

ARP (Address Resolution Protocol)은 인터넷 상에서 컴퓨터가 서로 주소를 찾기 위해 사용하는 프로토콜
-> 컴퓨터가 IP 주소를 사용하기 위해서는 이를 일반적인 MAC 주소로 변환해야 하는데, ARP는 이를 처리하기 위해 사용

즉 ARP는 수신지의 IP 주소를 바탕으로 MAC 주소를 조사할 수 있음

목적지까지 중계를 하는 도중에 컴퓨터와 라우터 등의 네트워크 기기는 목직지에 도착하기까지의 대략적인 목적지 만을 암
-> 이러한 시스템을 라우팅이라고 함

ex) 택배배송

화물을 보내는 사람은 택배 집배소 등에 화물을 가지고 가면 택배를 보낼 수 있는 것만 알면됨

집배소는 화물을 보내는 곳을 보고 어느 지역의 집배소로 보내는 지만 알면됨

목적지에 있는 집배소는 어느 집에 배달하면 되는지만 알면됨

즉 어떤 컴퓨터나 네트워크 기기도 인터넷 전체를 상세히 파악하고 있지는 못함


TCP(Transfer Control Protocol)

전송 계층에 해당(신뢰성 있는 바이트 스트림 서비스 제공)

바이트 스트림 서비스란 용량이 큰 데이터를 보내기 쉽게 TCP 세그먼트라고 불리는 단위 패킷으로 작게 분해하여 관리하는 것을 말함

즉 TCP는 대용량의 데이터를 보내기 쉽게 작게 분해하여 상대에게 보내고, 정확하게 도착했는지 확인하는 역할을 담당

상대에게 확실하게 데이터를 보내기 위해 TCP는 Three Way Handshaking이라는 방법 사용
-> 이는 패킷을 보내고 끝나는 것이 아니라, 보내졌는지 여부를 상대에게 확인하러 감
-> SYNACK라는 TCP 플래그를 사용
-> 플래그는 TCP/IP 프로토콜의 일부(커넥션을 설정하고 유지하기 위해 사용)

일반적으로 SYN 플래그가 전송되면, 수신측은 SYN/ACK 플래그로 응답
-> 이에 대한 응답으로 송신측은 ACK 플래그를 전송

  • SYN 플래그는 새로운 커넥션을 요청할 때 사용
  • SYN/ACK 플래그는 SYN 플래그에 대한 응답으로, 요청받은 커넥션을 수락할 때 사용
  • ACK 플래그는 SYN/ACK 플래그에 대한 응답으로, 요청받은 커넥션을 수락할 때 사용

TCP는 핸드쉐이킹 외에도 통신의 신뢰성을 보증하기 위해 다양한 시스템을 갖춤


DNS(Domain Name System)

응용 계층 시스템에서 도메인 이름IP 주소 이름 확인을 제공

도메인명에서 IP 주소를 조사하거나, IP 주소로부터 도메인명을 조사하는 서비스를 제공

ex)

사용자가 인터넷에서 "www.google.com"이라고 입력하면, DNS 시스템은 이 주소가 어떤 IP 주소와 연결되어 있는지 찾아서, 우리가 요청한 컴퓨터로 요청을 전달


HTTP, IP, TCP, DNS

진행 과정 예시

ex)

  1. 클라이언트가 https://www.naver.com 웹페이지를 보고싶어 함
  2. DNS 서버에 네이버 IP 주소를 알려달라 요청
  3. DNS 서버가 IP 주소는 22X.234. 라고 알려줌
  4. HTTP 담당 웹서버에 보낼 HTTP 메세지 작성
  5. TCP 담당은 통신하기 쉽도록 HTTP 메세지를 패킷으로 분해, 조각내서 일련번호를 부여 한 후 상대에게 패킷을 보냄
  6. IP 담당은 상대가 어디에 있는지 찾아 중계해 가면서 배송
  7. 이후 서버의 TCP 담당은 상대방으로 부터 패킷을 수신, 이후 도착한 패킷을 조립
  8. 서버의 HTTP담당은 웹 서버에 대한 리퀘스트 내용을 처리(ex: 홈페이지/xss/의 리소스를 원하는 군요!)

이러한 순서대로 리퀘스트 처리결과도 클라이언트에게 반환됨


URI와 URL

URI는 인터넷 상에 존재하는 자원(예: 웹페이지, 이미지, 비디오 등)을 식별하기 위해 사용되는 식별자

URL은 자원이 위치한 주소(장소)를 의미하기 때문에, 인터넷 상에 존재하는 자원을 식별할 수 있음
-> URI는 자원을 식별할 수 있는 주소뿐만 아니라, 자원을 식별할 수 있는 이름, 아이디 등 여러 종류의 식별자를 포함할 수 있음
-> URL는 URI의 서브셋

URI의 첫 부분은 스키마(scheme)라고 하며, 이는 자원이 어떤 프로토콜을 사용하여 접근할 수 있는지를 의미

URI에는 필요한 정보 전체를 지정하는 완전 수식 절대 URI or URL과 상대적 위치를 나타내는 상대 URL이 있음

ex) 절대 URI 포맷

http://user:pass@www.example.jp:80/dir/index.htm?uid=1#ch1

http:// -> 스키마
user:pass -> 자격정보(크리덴셜)
www.example.jp -> 서버 주소
80 -> 서버 포트
/dir/index.htm -> 계층적 파일 패스
uid=1 -> 쿼리 문자열
ch1 -> 프래그먼트 식별자

http나 https: 같은 스키마를 사용하여 리소스를 얻기 위해 사용하는 프로토콜을 지시

서버로부터 리소스를 취득할려면 자격정보가 필요함(유저명과 패스워드 지정 가능하며 옵션임)

절대 URI에서는 서버 주소를 지정할 필요가 있음(DNS 이름이나, 192.168.1.1과 같은 아이피 주소 지정)

서버 포트 : 서버의 접속 대상이 되는 네트워크 포트 번호를 지정

계층적 파일 패스 : 특정 리소스를 식별하기 위해서 서버 상의 파일 패스 지정

쿼리 문자열 : 파일 패스로 지정된 리소스에 임의의 파라미터를 넘겨주기 위해 쿼리 문자열 사용(옵션)

프래그먼트 식별자 : 취득한 리소스에서 서브 리소스를 가리키기 위해 사용

profile
Journey for Backend Developer

0개의 댓글

관련 채용 정보