잠깐 공부했었는데 계속 확실하게 알지 못해서 다시 공부하려고 한다.
1). IP
IP(Internet Protocol)라는 이름은 네트워크를 연동하는 프로토콜이라는 뜻으로 해석하자.
- OSI의 3 Layer(Network Layer)네트워크 계층과 Internet Protocol Suite의 3 Layer(Internet Layer)에 위치
IP 아래로는 네트워크를 만들 수 있는 다양한 하드웨어 기술 (Ethernet, WiFi 등...) 이 존재하고 있고, IP 위로는 다양한 응용 서비스(HTTP, FTP 등...)들이 동작할 수 있다.
간단한 예로 컴퓨터에 연결하는 랜선은 Ethernet, 모바일로 무선 네트워크를 이용하는 것은 WiFI, 개발 간 API를 호출할 때는 HTTP를 이영할 수 있는 것입니다. 이처럼 IP를 기반으로하면 어떠한 디바이스와 서버, 혹은 사용자가 사용해도 TCP/UDP와 관련된 네트워크 기능들을 사용할 수 있어진다.
- IP 특징
- 연결을 보장하기 위한 노력은 하지만 100% 보장해주지 않는다. 이를 Best-effort라고 표현하는데, IP 가 best-effort가 될 수 밖에 없는 이유는 서로 다른 특성의 여러 네트워크를 연동해야 되기 때문이다.
2). TCP / UDP : 전송을 제어하는 프로토콜규약
=> 인터넷상에서 데이터를 메세지의 형태로 보내기위해 IP와 함께 사용하는 프로토콜
- OSI의 4 Layer(Transport Layer) 전송계층 에서 사용하는 프로토콜
2-1). TCP
TCP header에는 목적지 주소, 확인응답, 오류 검출 및 복원, 실제 데이터 등이 있다. 그 중 UDP와 구분되는 부분이 바로 확인응답(Acknowledge)이다.
즉, TCP는 신뢰성을 보장하기 위해 ACK을 기반으로 재전송과 타임아웃 방법을 이용하고 있다. => 송신측에서 수신측에 패킷을 전송할때, 수신측에서 데이터를 전송받았는지 아닌지를 확인한다!
이때 ACK가 일정 시간동안 오지않으면 송신측에서 다시 패킷을 보내게 된다.
- TCP 특징
- 연결형 서비스로 가상 회선 방식을 제공
- 3-way hanshaking과정을 통해 연결을 설정하고 4-way handshaking(연결)을 통해 해제
- 흐름제어 및 혼잡제어
- 높은 신뢰성을 보장한다
- UDP보다 속도가 느리다
- 이메일, 파일전송 등 신뢰성을 요구하는 곳에 사용한다.
2-2). UDP
컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 프로토콜
- UDP 특징
- 비연결형 서비스로 데이터그램 방식 제공
- 정보를 주고받을때 정보를 보내거나 받는다는 신호절차를 거치지 않는다
- 신뢰성이 낮다
- TCP보다 속도가 빠르다.
- UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출
- 신뢰성을 요구하지 않는 라이브 스트리밍에 주로 사용한다.
TCP/UDP의 포트 목록
- 0번 ~ 1023번: 잘 알려진 포트 (well-known port)
- 잘 알려진 포트(well-known port)는 특정한 쓰임새를 위해서 IANA에서 할당한 TCP 및 UDP 포트 번호의 일부
- 1024번 ~ 49151번: 등록된 포트 (registered port)
- 49152번 ~ 65535번: 동적 포트 (dynamic port)
대부분의 유닉스 계열 운영 체제의 경우, 잘 알려진 포트를 열려면 루트 권한이 있어야 한다.
TCP/UDP 비교
프로토콜 종류 |
TCP |
UDP |
연결방식 |
연결형 서비스 |
비연결형 서비스 |
패킷 교환 방식 |
가상회선 방식 |
데이터그램 방식 |
전송 순서 |
전송 순서 보장 |
전송순서 바뀔수 있음 |
수신 여부확인 |
수신 여부 확인 |
수신여부 확인 x |
통신방식 |
1:1 통신 |
1:1, 1:n or N:N통신 |
신뢰성 |
높다 |
낮다 |
속도 |
느리다 |
빠르다 |
'Knowledge' 카테고리의 다른 글
[Knowledge] iBatis & myBatis 사용 개념-2 (0) | 2020.12.30 |
---|---|
[Knowledge] iBatis & myBatis 사용 개념-1 (0) | 2020.12.30 |
[Knowledge] Eclipse Lombok(롬복) 사용하기 (0) | 2020.12.30 |
[Knowledge] Java - Eclipse 개발환경 세팅 기본-1 (0) | 2020.12.30 |
[Knowledge] Java - Eclipse 개발환경 세팅 기본-2 (0) | 2020.12.30 |