[작성일: 2023. 09. 02]
인터넷 통신
인터넷에서 컴퓨터 둘은 어떻게 통신할까?
IP(인터넷 프로토콜)
- IP라는 인터넷 프로토콜은 지정한 IP주소(IP Address)에 데이터를 전달한다.
- 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.
IP 프로토콜의 한계
- 비연걸성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송된다.
- 비신뢰성
- 중간에 패킷이 사라지면?
- 패킷이 순서대로 오지 않는다면?
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면?
TCP
왼쪽은 인터넷 프로토콜의 4계층이고 오른쪽은 프로토콜 계층이다.
프로그램이 Hello, world!라는 메시지를 생성하고 SOCKET 라이브러리를 통해 전달한다.
TCP 정보를 생성되면 메시지 데이터를 포함한다. 그 다음으로 IP 패킷을 생성하면 TCP 데이터가 포함된다.
TCP 특징
- 전송 제어 프로토콜(Transmission Control Protocol)
- 연결 지향 - TCP 3way handshake(가상 연결)
- 클라이언트에서 서버로 SYN이라는 메시지를 보낸다.
- 서버에서 ACK라는 메시지를 클라이언트에게 보내며 SYN 메시지를 보낸다.
- 클라이언트에서 ACK를 보낸다.(요즘은 이 때 같이 데이터를 전송하기도 한다.)
- 클라이언트도 서버를 믿을 수 있고, 서버도 클라이언트를 믿을 수 있다.
- 그 후 데이터를 전송한다.
- 데이터 전달 보증: 데이터를 전송하면 서버에서 데이터를 잘 받았다고 보내준다.
- 순서 보장: 패킷을 1, 2, 3 순서대로 보냈지만 서버에는 1, 2, 3 순서로 도착했다면 2번부터 다시 보내라고 요청한다.(서버에서 최적화 할 수도 있기는 함.)
- TCP 안에는 전송제어 정보, 순서 정보, 검증 정보가 있기 때문에 가능한 것
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
UDP
- TCP와 같은 계층에 있는 프로토콜
- 사용자 데이터그램 프로토콜(User Datagram protocol)
- 연결지향 X - TCP 3 way handshake X
- 데이터 전달이 보증되지 않음
- 순서 보장되지 않음
- 데이터 전달 및 순서가 보장되지는 않지만 단순하고 빠름
- IP와 거의 같다고 보면 되지만 PORT + 체크섬 정도가 추가된다.
- 애클리케이션에서 추가 작업 필요
PORT
한 번에 둘 이상을 연결해야 할 때는 어떻게 해야 할까?
TCP/IP 패킷에는 출발지 PORT와 목적지 PORT가 존재한다.
PORT는 같은 IP 내에서 프로세스를 구분한다. 예를들면 게임에는 8090, 화상통화에는 21000, 웹 브라우저에는 10010 포트를 열어 연결해 놓는다.
요청을 200.200.200.3으로 보냈다면 웹 브라우저가 응답을 할 때는 100.100.100.1의 포트 10010으로 보내준다.
- 0 ~ 65535 할당 가능
- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋다.
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS
IP는 기억하기도 어렵고 변경될 가능성이 있다.
그래서 도메인 네임 시스템(Domain Name System)을 사용한다.
DNS란 도메인 명을 IP 주소로 변환해주는 것이다.
DNS 서버에 도메인을 등록해놓으면 우선 도메인 명으로 찾을 수 있고, DNS서버가 IP를 응답으로 준다.
🐣 출처: 인프런 김영한님 강의
이 글은 인프런의 김영한님 HTTP 웹 강의를 보고 작성한 글입니다.
강의를 들으면서 정리한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.