1. 인터넷 통신

freejia·2021년 10월 16일
0

HTTP

목록 보기
1/3

김영한님의 모든 개발자를 위한 HTTP웹 기본지식 강의를 수강하고 요약했습니다.
궁금한 내용은 공부하여 덧붙였습니다.


아래의 주제를 다룹니다.

  • 인터넷 통신
  • IP(인터넷 프로토콜)
  • TCP, UDP
  • PORT
  • DNS

인터넷에서 컴퓨터 둘은 어떻게 통신할까?

나는 집에서 컴퓨터로 친구와 카톡 채팅을 하고 있다.

IP(인터넷 프로토콜)

친구의 컴퓨터와 내 컴퓨터는 어떻게 서로를 식별하고 통신할 수 있는걸까?

컴퓨터는 인터넷이라는 망을 이용하여 통신한다.
각각의 컴퓨터는 고유의 주소를 가지는데, 이것을 노드의 IP가 있다고 표현한다.

아래는 위키백과의 '인터넷 프로토콜 내용'이다.

인터넷 프로토콜(IP, InternetProtocol)
송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는데 사용하는 규약이다.
주소지정과 패킷 분할 및 조립 기능을 담당한다.

IP의 역할

  1. 주소를 지정하는 규칙이 IP규약에 따라 수행된다.
  2. 보내는 정보를 잘게 잘라서 패킷 단위로 보낸다.
    정보를 자를 때와 패킷을 다시 조립할 때 IP 규약에 따라 수행된다.

IP 프로토콜의 한계

  • 비연결성
    패킷을 받은 대상이 없거나 서비스를 제공하지 못하는 호스트여도 패킷을 전송한다.

  • 비신뢰성
    중간에 패킷이 사라지면?
    패킷이 순서대로 안오면?

  • 프로그램 구분
    같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

    IP프로토콜의 한계를 보완하기 위해 TCP, UDP프로토콜이 있다.

TCP

클라이언트와 서버 간의 연결을 만들고 나서 데이터 전송을 시작한다.
그래서 연결지향 프로토콜이라고 한다.
내가 패킷을 보내면, 상대방이 패킷을 받았는지 그리고 몇 번째 까지 받았는지도 알려준다.

[세션 초기화] 3-way handshake

데이터 전달을 보장하기 위해 상대방 컴퓨터와 세션을 수립하는 과정이다.

SYN: Synchronize sequence numbers
ACK: Acknowledgement

[세션 종료] 4-way handshake

세션을 종료하기 위한 과정이다.

상대방이 못받은 패킷이 있다면?

못 받았다는 그 번호부터 패킷을 다시 보낸다.
그래서 패킷을 빠짐없이 보낼 수 있다.

TCP 특징
1. 연결 지향 - TCP 3 way handshake(가상 연결)
2. 순서보장
3. 데이터 전달 보장 (패킷이 유실되지 않고 전송 됨)

UDP (User Datagram Protocol)

호스트가 패킷을 보내기만 한다.
상대방이 패킷을 받았다/안받았다 ACK을 안준다.

TCP에 비해 규칙이 적어서 '하얀도화지'에 비유한다.
단순해서 빠르다.

UDP특징
1. 연결지향 X
2. 순서보장 X
3. 데이터 전달 보장 X
4. IP와 거의 같다. IP+PORT+체크섬 정도만 추가된 규칙이다.

PORT

프로세스의 고유번호다.
프로세스는 현재 메모리에 올라와서 실행중인 프로그램이다.

포트 번호가 고유해야 하는 이유?

내 노트북으로 유튜브로 음악을 듣고, 카톡으로 채팅을 하고, 터미널로 ssh 접속하여 작업을 한다.
내 노트북(하나의 IP)에서 여러개의 프로세스가 수행된다.

프로세스 마다의 고유 식별자가 있어야 서버가 보낸 정보를 어떤 프로세스에 보낼지 식별할 수 있다.

포트 번호가 없다면, 내 컴퓨터의 카톡 채팅방에으로 받을 메시지가 유투브 브라우저로 정보를 보낼지 어떤 프로세스로 보낼지 알 수 없다.

PORT번호 할당

포트번호는 0~65535 번까지 할당할 수 있다.
단, 0~1023까지 총 1024개의 번호는 OS가 쓰는 잘 알려진 포트이다. 사용을 피하자.

  • HTTP - 80번
  • FTP - 20,21번

DNS (domain name server)

100.100.100.1 이라는 IP는 변하기 쉽고, 외우기 어렵다.
네이버의 도메인 이름은 www.naver.com 이렇게 문자로 되어 있어서 외우기 쉽다.

도메인과 IP주소를 매핑해준다.


다음 시간에는 'URI와 웹 브라우저 요청 흐름'에 대해 배운다.

참고 포스팅
HTTP TCP/IP프로토콜
TCP란

profile
코딩 리딩 라이딩💛

0개의 댓글