IT recording...
[Network] 3. TCP, UDP 본문
[그림과 함께 편하게 보려면 여기로]
https://adorable-aspen-d23.notion.site/Network-3-TCP-UDP-ed4dd8f8f8d2426193a93491351092f1
1. Transport Layer (전송계층)
- 목적지에 신뢰할 수 있는 데이터를 전달하는 계층
- 역할
- 데이터의 목적지가 어떤 프로세스인지 구분
- port 번호
- 웹서버, 이메일 서버, storage 서버 등등
- 데이터를 받았을 때 어떤 프로그램을 써서 보여줄 것인지 알아차릴 수 있도록 header를 추가해야 한다.
21 FTP 25 SMTP 53 DNS 80 HTTP 443 HTTPS
- port 번호
- 오류 점검
- 데이터가 제대로 도착했는지 확인하고 오류가 발생하면 데이터를 재전송하도록 요청한다.
- 데이터의 목적지가 어떤 프로세스인지 구분
- 공통
- TCP헤더, UDP헤더에 포트번호가 포함된다.
- 출발지 포트번호
- 도착지 포트번호
- TCP헤더, UDP헤더에 포트번호가 포함된다.
TCP
UDP
2. TCP(Transmission Control Protocol)
- HTTP,SSH,FTP
- 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
- IP주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며 TCP의 특성을 활용해 신뢰성을 유지하겠다.
- IP → 데이터의 배달
- TCP → 패킷 추적 및 관리
- 패킷 : 라우팅을 효율적으로 하기 위해 데이터를 여러 조각들로 나누어 전송하는 것
- IP주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며 TCP의 특성을 활용해 신뢰성을 유지하겠다.
- 연결형 서비스
- 연결을 위해 할당되는 논리적 경로가 있다.
- 모든 패킷들을 같은 경로로 이동
- 연결 설정(3-way handshaking)
- 해제 설정(4-way handshaking)
- 연결을 위해 할당되는 논리적 경로가 있다.
- 흐름 제어 및 혼잡 제어
- 흐름제어
- 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절
- 수신자의 버퍼 오버플로우 방지
- 혼잡제어
- 네트워크 내의 패킷 수가 증가하지 않도록 방지
- 정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상을 막음
- 흐름제어
- 단점
- 매번 connection을 연결해서 시간 손실 발생 (3-way-handshaking)
- 패킷을 조금만 손실해도 재전송
- 언제 사용?
- 연속성보다 신뢰성있는 전송이 중요할 때 사용하는 프로토콜
- ex) 파일전송, HTTP, 메일
1. TCP 3-way handshaking
: 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장한다.
- 0단계 - 통신전
- 클라이언트는 포트가 닫힌 Closed 상태
- 서버는 해당 포트로 항상 서비스를 제공할 수 있도록 Listen 상태
- 1단계 - 클라이언트의 통신 요청 (SYN)
- 임의의 포트 번호가 클라이언트 프로그램에 할당
- 클라이언트 SYN Sent 상태
- 2단계 - 서버의 통신 수락 (SYN + ACK)
- 서버는 SYN Received 상태
- 클라이언트 Established 상태
- 3단계 - 클라이언트의 서버 응답 확인 (ACK)
- 클라이언트는 서버의 응답을 확인했다는 표시로 ACK 전송
- 서버 Established 상태
- 이후, 전송할 데이터가 있으면 데이터를 전송할 수 있다.
2. TCP 4-way handshaking
- 0단계 - 해제전
- 클라이언트 ESTABLISHED 상태
- 서버 ESTABLISHED 상태
- 1단계 - 클라이언트의 종료 요청 (FIN)
- 클라이언트 FIN-wait 상태
- 서버가 FIN플래그로 응답하기 전까지 연결을 계속 유지
- 클라이언트 FIN-wait 상태
- 2단계 - 서버 종료 수락 (ACK)
- 클라이언트 FIN-wait 상태
- 서버 CLOSE-wait 상태
- 서버는 일단 확인 메시지를 보내고 자신의 통신이 끝날 때까지 기다린다.
- 전송할 데이터가 남아있다면 계속해서 진행한다.
- 클라이언트 쪽에서도 아직 서버로부터 받지 못한 데이터가 있을 것을 대비해 일정 시간동안 세션을 남겨두고 패킷을 기다린다. (Time_wait)
- 3단계 - 서버의 찐 종료 신호 (FIN)
- 데이터 다 보냈어! 연결 종료하자~
- 클라이언트 FIN-wait 상태
- 서버 LAST-ACK 상태
- 4단계 - 클라이언트의 서버 응답 확인 (ACK)
- 오키! 확인했어~
- 클라이언트로부터 ACK메시지를 받은 서버는 소켓 연결을 해제한다.
- 클라이언트 TIME WAIT 후 CLOSED 상태
- 서버 CLOSED 상태
- 오키! 확인했어~
3. UDP(user datagram protocol)
- 데이터를 데이터그램 단위로 처리하는 프로토콜
- IP주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며 UDP의 특성을 활용해 신뢰성을 유지하겠다.
- 비연결형 서비스
- 연결을 위해 사용하는 논리적 경로가 없다. 즉, 각 데이터그램들이 다른 경로를 통해 도착한다.
- 흐름제어X, 혼잡제어X
- 패킷에 순서를 부여해서 재조립하는 기능이 존재하지 않는다. → 오류가 있는지 확인할 수 없다.
- 실시간 응용 및 멀티태스킹 가능
- 여러 다수 지점에 전송 가능하다. (1:다)
- 언제 사용?
- 신뢰성보다는 연속성이 중요한 서비스
- ex) 실시간 서비스(streaming)
- DNS, Voice of IP(VoIP)
- DNS : 호스트의 IP주소를 찾는 프로토콜
- DNS, Voice of IP(VoIP)
2. 결론
- TCP
- 나 데이터 보낸다?? - OK!
- 더 보내도 돼? - 아직!
- 다 받았어? - 응!! 다왔어!!
- UDP
- 나 보낸다아아아가가가가각!!!! - (안들음)
TCP
UDP
TCP UDP
연결방식 | 연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 | 전송 순서 보장 | 전송 순서 보장 안함 |
수신 여부 확인 | 수신 여부 확인함 | 수신 여부 확인 안함 |
통신 방식 | 1:1 통신 | 1:1, 1:N, N:N |
신뢰성 | 높다 | 낮다 |
속도 | 느리다 | 빠르다 |
참고
https://mangkyu.tistory.com/15
'Network' 카테고리의 다른 글
[Network] 6. 대칭키/공개키 (0) | 2022.05.16 |
---|---|
[Network] 5. DNS Round Robin (0) | 2022.05.16 |
[Network] 4. HTTP (0) | 2022.05.16 |
[Network] 2. OSI 7계층 (0) | 2022.05.16 |
[Network] 1. 인터넷 (0) | 2022.05.16 |
Comments