네트워크 통신 기초
1. IP(Internet Protocol)
우리가 흔히 말하는 IP주소할 때 그 IP이다.
지정한 IP 주소에 패킷이라는 통신 단위로 데이터를 전달한다
패킷
패킷에는 다음과 같은 정보들이 담긴다
- 출발지 IP
- 목적지 IP
- 전송 데이터
패킷을 포함한 데이터들은 네트워크상에 존재하는 노드들을 통해 목적지로 보내진다.
해당 데이터를 성공적으로 받은 서버는 OK라는 메세지를 다시 노드들을 통해 클라이언트로 보내주어 확인을 한다
한계점
1. 패킷을 받을 서버가 존재하지 않거나 서비스 불능 상태여도 패킷을 보내게 된다
2. 불량 노드들로 인해 중간에 패킷이 사라질 수 있으며 패킷의 순서가 뒤바뀔 수 있다.
3. 포트 정보가 없기 때문에 같은 IP를 사용하는 애플리케이션이 두 개 이상이라면 문제가 생기게 된다
위와 같은 한계점을 해결하기 위해 TCP / UDP라는 새로운 Layer가 등장하게 된다.
2. TCP / UDP
IP의 한계점을 극복하기 위해 IP 패킷 정보에 다음과 같은 추가 정보를 붙여넣는다.
현재 대부분은 TCP 프로토콜을 사용한다
추가 패킷
- 출발지 PORT
- 목적지 PORT
- 전송 제어
- 전송 순서
- 검증 정보
TCP 특징
- 3 Way HandShake
- Client는 Server에게 SYNchronize 메세지를 보내 연결을 요청한다
- Server는 자신에게 Client를 연결하고, SYNchronize 메세지와 함께 ACKnowledge 메세지를 보내 연결됨을 확인하는 메세지를 보낸다
- Client는 Server가 보낸 ACKnowledge 메세지를 확인한 다음, 자신도 Server와 연결을 맺은 다음, 연결됨을 확인하는 ACKnowledge 메세지를 보낸다(이 때, 데이터를 같이 싣어 보낼 수 있다)
- Server는 Client에게 데이터를 전송한다.(양방향 연결이 맺어져있는 상태)
- 데이터 전달 보증
Client가 Server로 보낸 데이터가 도착하면, Server는 데이터를 잘 받았다고 응답을 꼭 해주게 된다
- 순서 보장
TCP 추가 정보에 동봉된 전송 순서와 다른 순서로 패킷이 도착하게 된다면, Server는 Client에게 패킷을 순서에 맞게 다 시 보내라는 요청을 보낸다.
UDP 특징
- 위에 기술한 UDP의 특징을 전부 가지고 있지 않다 => 빠르고 가볍다
- IP와 거의 비슷하며, 다른점은 PORT정보와 CheckSum 정도이다. 따라서 App에서 추가 작업이 필요하다
3. PORT
하나의 IP에서 통신해야 하는 여러 개의 프로세스가 있을 때 구분지어주기 위해 존재
2^16(65535)까지 존재하며, 0~1023은 Well-Known PORT이기 때문에 사용하지 않는것이 좋다
HTTP : 80 PORT
HTTPS : 443 PORT
4. DNS
IP주소에 별칭을 붙여주어 쉽게 접근 가능하도록 해준다.
특징
- DNS 서버가 알아서 DNS와 IP를 매칭 해준다(114같은 느낌)
- 통신 상대의 IP 주소가 변경 되어도 아무런 작업 없이 대응 가능하다
출처 : https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의
실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...
www.inflearn.com
'Back-End > HTTP 기본' 카테고리의 다른 글
[HTTP 기본] 4. HTTP 상태 코드와 HTTP 헤더 (0) | 2022.07.18 |
---|---|
[HTTP 기본] 3. API와 HTTP 메서드 (0) | 2022.07.17 |
[HTTP 기본] 2. HTTP 통신 흐름과 Stateless (0) | 2022.07.17 |