인터넷 네트워크

루밤·2021년 7월 21일
0

HTTP

목록 보기
1/8
post-thumbnail
  1. 인터넷 통신
  2. IP
  3. TCP, UDP
  4. PORT
  5. DNS

1. 인터넷 통신

호스트 간 통신을 하기 위해서는 각 계층에 맞는 프로토콜을 지켜가며 서로 데이터를 보내야한다.

한 호스트에서 보내는 데이터는 인터넷을 통해서 목적 호스트에 전달이 되는데, 인터넷이라는 네트워크를 이용하기 위해 IP 프로토콜을 사용하여 서로를 구분하고 목적 호스트에 정확히 전달해준다.
그리고 TCP, UDP를 사용하여 해당 호스트의 목적 포트에 데이터를 전달해주고, HTTP, HTTPS, FTP 등 적절한 프로토콜로 어플리케이션 계층끼리 통신을 할 수 있게 된다.


2. IP

인터넷에서 목적 호스트에 도달하기 위해서는 목적 호스트의 IP를 이용하여 찾아하고 네트워크를 구성하고 있는 라우터들에는 목적 호스트의 IP에 도달하기 위한 정보들이 여러 라우팅 알고리즘을 통해 라우터 내 포워딩 테이블에 저장이 되어있다. 포워딩 테이블을 이용하여, 다음 라우터, 그 다음 라우터로 차례차례 데이터패킷을 전송하고, 이 과정을 거쳐 목적 호스트에 도착하게 된다.

하지만 라우터들은 라우팅 알고리즘을 수행하고 포워딩을 해주는데 워낙 바쁘기 때문에 패킷의 손실이나 패킷의 순서에 신경 쓸 여력이 없다. 또한 패킷을 받을 대상이 현재 패킷을 받을 수 있는 상태인지도 알 수 없고, 대상 호스트에서 어떤 어플리케이션이 패킷을 쓸지도 알 수 없다.

따라서 네트워크 계층에서는 호스트에서 호스트로의 데이터 패킷 전달만을 담당하고 그 이외의 것들은 다른 계층에서 처리해준다.


3. TCP, UDP

네트워크 계층이 올바른 호스트에 데이터 패킷을 전달해줬다면, 전송 계층의 TCP, UDP 프로토콜은 호스트 내의 알맞은 포트에 데이터를 전달해주는 역할을 해준다.

- TCP

TCP는 추가적인 기능도 제공을 하는데, 데이터가 확실히 전달되었다는 신뢰성을 보장해준다.
3-way-handshake를 통해 대상 호스트와 연결을 확인하고, SYN와 ACK를 통하여 패킷을 제대로 받았는지 확인하고, 어떤 이유로 패킷을 받지 못하였으면 재전송을 통해 데이터를 확실히 전달한다.
또한 흐름제어를 통해 패킷의 순서를 보장해주고 혼잡제어를 통해 네트워크의 상태를 확인하여 한번에 전송하는 패킷의 수를 적절하게 조절해주는 등 여러가지 기능을 통해 확실한 데이터 전달을 보장해준다.

하지만 연결을 위해 여러 초기설정 등 요구되는 사항이 많기 때문에 그만큼 시간이 걸린다는 단점이 있다.

- UDP

UDP는 최소한의 오류검사와 알맞은 포트로 전달만을 해주고 그 외에 신뢰성은 보장해주지 않는다. 따라서 신뢰성있는 통신은 제공해주지 못하지만 전송속도가 굉장히 빠르다는 장점이 있어 실시간 동영상 전송, DNS 등에서 UDP를 사용한다.

대부분의 통신에서 TCP를 사용하지만, 최근에는 UDP가 주목을 받고 있다.
이미 너무 많은 설정이 정해져 있는 TCP보다, 자유롭게 필요한 설정들을 추가해서 사용할 수 있는 UDP를 이용하여 목적에 맞게 기능을 추가하여 빠르게 통신할 수 있기 때문이다.


PORT

포트는 호스트 내에서 알맞은 어플리케이션에 패킷을 전달해주기 위해 사용되며, 0~65535까지 할당이 가능하다.

0~1023은 잘 알려진 포트로 사용하지 않는 것이 좋고, 대표적으로 아래의 프로토콜들이 해당 포트번호를 사용한다.

  • FTP 20, 21

  • TELNET 23

  • HTTP 80

  • HTTPS 443


DNS

사람들이 기억하기 힘들고 변경될 수 있는 IP주소 대신에 도메인 이름을 사용하기 위한 시스템으로, 전화번호부와 비슷한 역할을 수행한다. 웹브라우저에 도메인 이름을 입력하면 DNS 서버에 순차적으로 접근하여 원하는 IP주소를 찾아서 반환해준다. 그 IP주소로 우리는 원하는 호스트에 접근할 수 있게 된다.




해당 포스팅은 김영한님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식"를 수강하고 배운 내용을 정리한 글입니다.

0개의 댓글