http/웹은 인터넷네트워크를 기반으로 하기때문에 사전학습으로 알아보자.
1. IP (인터넷 프로토콜)
-
인터넷 프로토콜의 역할
클라이언트가 ip주소를 부여받고 지정한 ip주소에 데이터를 전달한다. 이때 패킷(Packet)이라는 통신 단위로 데이터를 전달하게 된다.
-
한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다! 정확히는 대상 서버가 패킷을 받을 수 있는지 없는지의 상태를 알 수가 없기 때문에 그냥 일단 보냄.
- 비신뢰성
- 중간에 패킷이 사라지거나 패킷이 순서대로 오지 않을 수 있다. 그럼 소실로 이어짐.
- 메시지가 대략 1500 바이트가 넘으면 끊어서 보내게 되는데, 끊어진 2개의 순서가 보장되지 않음. 패킷들이 중간에 다른 노드를 탈 수 있기 때문이다.
- ex) Hello, world가 각각 Hello, 와 world 로 각각 끊어져서 전달 되는 상황이라고 가정해보자. 이때 중간에 다른 노드를 통해 전달되면 world 가 Hello, 보다 먼저 도착 할 수도 있다.
- 프로그램 구분
- 같은 ip를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일때, 인터넷 프로토콜 만으로는 구분하는데에 한계가 있다.
- 비연결성
-
이러한 한계를 TCP가 해결해준다.
2. TCP/UDP
- IP계층에 위에 올려서 보완해주는 개념이라고 쉽게 생각할 수 있다.
-
TCP(전송제어 프로토콜 Transmission Control Protocol) 특징
- 연결지향
-
TCP 3 way handshake(가상연결)
-
한마디로 SYN(접속 요청), ACK(요청 수락)을 통해 연결이 되어있는지를 확인하고 보낸다.
-
추가로, 요즘엔 최적화가 되어 3번 ACK를 보낼때 4번 데이터 전송도 함께한다.
-
- 데이터 전달 보증
- 누락이 된 패킷이 있으면 알 수 있다.
- 순서보장
- 연결지향
-
UDP(사용자 데이터그램 프로토콜 User Datagram Protocol) 특징
- PORT + 체크섬 정도만 추가
-
PORT
- 같은 IP내에서 프로세스를 구분하는 역할이다.
-
DNS (도메인 네임 시스템 Domaion name System)
- ip 주소가 바뀔 수 있기 때문에!
반응형