[http 기초 지식] - 네트워크

heyhey·2023년 1월 26일
0

network

목록 보기
14/15
post-thumbnail

인터넷에서 컴퓨터들은 어떻게 통신할까?
http를 이해하기 위해서는 인터넷 네트워크에 대한 이해가 있어야 가능하다.

IP


컴퓨터끼리 통신을 하기 위해서는 IP 주소가 있어야 한다.

ex) 100.100.100.1

IP 의 역할

  • 지정한 IP 주소에 데이터 전달
  • 패킷(package + bucket) 이라는 통신 단위로 데이터 전달

클라이언트 패킷 전달

패킷의 상세 내용 : 출발지 IP, 목적지 IP, 내용..

패킷을 인터넷을 통해 보내게 된다면 노드들을 거쳐 서버 IP 주소를 찾아 보내진다.

서버 패킷 전달

패킷의 상세 내용 : 출발지 IP, 목적지 IP, 응답..

클라이언트와 방법이 동일하다

  • 이런 방법으로 통신을 하던 것이 원래의 구조이다.
  • 하지만 IP 프로토콜만을 사용했을 때, 몇몇의 단점이 존재한다.

IP 프로토콜의 한계


  1. 비연결성
  • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송된다.
  • 데이터를 받을 서버가 꺼져있어도 대상 서버가 패킷을 받을 수 있는 상태인지 알 수 없기 때문에 패킷이 전송되어버린다.
  1. 비신뢰성
  • 중간에 패킷이 사라져도 알 수 없다.
  • 또한 여러 패킷을 보냈을 때 순서대로 오지 않아도 알 수 있는 방법이 없다.
  1. 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러개일 때 문제가 생긴다.

이런 문제를 해결해줄 수 있는 방법이 TCP 프로토콜 이다.

TCP


transmission control protocol

인터넷 프로토콜 스택의 4계층이다. 즉 TCP란 IP를 보완해서 나온 기술이라고 볼 수 있다.

위에서부터 순서대로 진행이 된다.
1. 애플리케이션에서 메시지를 생성해서 아래로 내려준다.
2. TCP 정보를 생성하고, 메시지 데이터를 포함한다.
3. IP 패킷을 생성한다 (TCP 정보가 포함)

TCP/IP 패킷 정보

IP 패킷에는 앞서 설명한 내용과 같이 출발지 IP,목적지 IP, 내용 등이 있다.

TCP 패킷에는 거기에 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 등이 추가로 들어간다.

이렇게 추가로 내용이 들어가기 때문에 다음의 장점이 있다.

TCP 특징

  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 연결지향 - TCP 3way handshake

3way handshake

  1. SYN : 접속 요청
  2. ACK : 요청 수락

클라이언트가 서버에 connect를 위해 SYN 을 보내고 서버가 연결되어 있다면, SYN과 함께 ACK 을 보내게 된다. 클라이언트가 다시 받아 ACK을 다시 보내게 되고 그 후부터 데이터 전송이 가능해진다.

요즘은 세번째 ACK을 보내면서 데이터도 함께 전송 가능하다.

UDP


user datagram protocol

  • tcp 와 비교했을 때 기능이 거의 없다 봐도 무방하다.
  • 데이터 전달 및 순서 보장이 없지만, 단순하고 빠르다.
  • IP와 다른점은 PORT 가 추가된다는 점이다.

PORT


같은 IP 내에서 프로세스를 구분해 준다.
즉 한 컴퓨터로 여러 서버와 통신하게 해준다.
TCP/UDP 패킷에서 PORT를 입력해주기 때문에 PORT 정보도 알 수 있다.

DNS


Domain name system
IP 번호를 기억하기 어렵기 때문에 사용한다.
도메인 명을 IP 주소로 변환시켜 준다.

URI


Uniform resource identifier

URI는 URL과 URN 로 분류될 수 있다.
일반적으로 우리가 아는 형태는 URL로 http로 시작하고,
URN은 urn으로 시작하고 이름으로 사용한다. 하지만 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않아서 잘 사용하지 않는다.

  • resource : 자원, URI로 식별할 수 있는 모든 것

scheme (protocol)

주로 프로토콜을 사용한다.

  • 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 하는 약속
    우리가 흔히 아는 http,https,ftp 등이 있다.

포트는 생략 가능하며, http는 80 https는 443 포트를 사용한다.

userinfo

scheme://[userinfo@]host.. 형식으로 사용한다.
URL에 사용자 정보를 포함해서 인증한다.
거의 사용되지 않는다.

host (domain)

도메인명 또는 IP 주소를 직접 사용가능하다.

path

리소스 경로

query

웹서버에 제공하는 파라미터이다.
query parameter, query string이라 불린다.
key = value 형태로 사용되며 ?로 시작하고, &로 추가가 가능하다

reference

  • 김영한님의 HTTP 웹 기본지식 강좌
profile
주경야독

0개의 댓글