Network 키워드 3 - TCP/IP, UDP

TCP/IP

IP

IP 프로토콜의 한계

TCP

장비들 간의 통신 과정에서 정보를 안정적으로, 순서대로, 에러없이 교환할 수 있도록 하는 것에 목적을 둔 프로토콜

  • 신뢰성 있는 데이터 통신 프로토콜
  • 데이터 순차 전송을 보장
  • 흐름 제어(Flow Control)
  • 혼잡 제어(Congestion Control)
  • 에러 감지(Error Detection)
  • Connection 연결 (3 way handshake): 양방향 통신

왜 이런 방식(패킷 교환 방식)을 사용할까?

참고: 블로그

Q: 전송 중간에 패킷이 쥐도새도 모르게 사라지거나 훼손되면 어떡해요? A: 그럼 그 패킷만 다시 보내라고 해!(ARQ)

Q: 송신 측이 패킷을 쪼갠 순서를 알아야 수신 측이 재조립할 수 있겠는데요? A: 그럼 순서번호를 패킷이랑 같이 보내!(시퀀스 번호)

Q: 수신 측이 처리할 수 있는 속도보다 송신 측이 패킷을 빠르게 보내버리면 어떡하죠? A: 그럼 수신 측이 처리할 수 있는 양을 송신 측에 알려주고 그 만큼만 보내라고 해! (슬라이딩 윈도우)

Segement

image

TCP Header

image

Source port, Destination Port

Sequence Number

Acknowledgement Number

Data Offset

Flags(NS ~ FIN)

Checksum

Options



참고: tcpdump -c 10

3 way handshake (Connection 성립)

image

TCP 데이터 전송 방식

1. Client가 패킷 송신
2. Server에서 ACK 송신
3. ACK를 수신하지 못하면 재전송

4 way handshake(Connection 해제)

image

이미지 출처: 블로그

1. 데이터를 전부 송신한 Client가 FIN 송신
2. Server가 ACK 송신
3. Server에서 남은 패킷 송신(일정 시간 대기, 서버가 남은 패킷 보내기)
4. Server가 FIN 송신
5. Client가 ACK 송신

TCP의 문제점

UDP 특징

image

참고

책 - 모두의 네트워크

책 - 성공과 실패를 결정하는 1%의 네트워크 원리

강의 - 인프런 - 모든 개발자를 위한 HTTP 웹 기본 지식

강의 - 부스트코스 - 웹 백엔드

강의 - [10분 테코톡] 👨‍🏫르윈의 TCP UDP

블로그 - [UDP, UDP Header] 개념잡기

블로그 - TCP의 헤더에는 어떤 정보들이 담겨있는걸까?

블로그 - [Network] TCP/IP 모델 패킷 전송 과정