TCP/UDP

eunyeong·2023년 1월 25일
0

Network_Basic

목록 보기
2/4
post-thumbnail

TCP

  • tcp는 웹이나 이메일 FTP와 같이 정확한 데이터 전달이 필요한 통신에 사용된다. 신뢰성을 더하기 위해 데이터를 세그먼트(segment) 단위로 분할한다.

  • TCP header 정보

  1. Sequence number : 전송하는 데이터의 순서 (올바르게 재조립 용도)

  2. Acknowledgment number : 데이터를 받은 수신자가 예상하는 다음 시퀀스 번호

  3. 컨트롤 비트는 현재의 통신 상태를 표현하는 플래그 역할(on/off 1비트 크기)

    => CWR : 통신 경로 혼잡
    => ECE : 통신 경로 혼잡하여 수신 못할 가능성
    => URG : 데이터를 즉시 처리
    => ACK : 이전 동작을 확인
    => PSH : 즉시 애플리케이션 계층에 전달
    => RST : 접속이 강제 중단
    => SYN : 시작할 때 ON으로 설정
    => FIN : 송신이 완료되어 통신을 종료

  • TCP 통신은 커넥션 연결에서 시작. 커넥션을 맺는 과정은 3-way handshake라고 부른다. SYN -> SYN+ACK(응답 확인) -> ACK 와 같이 3단계로 구성되어 있다.

  • 커넥션을 맺을 때 일련번호와 최대 세그먼트 크기(MSS)를 서로 합의하고 조율하게 된다. TCP는 이런 일련번호와 응답 확인 번호 정보를 (송신/수신) 따로 관리하면서 데이터가 제대로 송수신되는지 확인한다.

  • 수신 측은 TCP 헤더의 윈도우 사이즈에 버퍼(Buffer)의 크기를 설정하고 송신 측에 통보함으로써 어느 정도의 크기까지 받아 낼 수 있는지를 알려준다. 또한 윈도우 사이즈를 통해 현재 어느 정도 수신할 수 있는지를 수시로 알려준다. 이런 과정을 흐름 제어라고 한다.

  • 4-way handshake 과정은 세션을 종료하기 위해 수행되는 절차를 말한다. FIN (client) -> ACK (server)-> FIN (server) -> ACK (client) 4단계로 이루어진다. Client는 Server로부터 FIN 플래그를 수신하더라도 일정시간동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정을 거친다. 이를 TIME-WAIT 과정이라고 한다.

UDP

  • udp는 tcp에 비해 간단한 프로토콜로서 단순히 데이터를 보내는 역할만 한다. 일부 데이터가 누락되더라도 제때 빠르게 전송되어야 하는 상황에서 사용된다.

  • UDP에는 하나의 패킷을 (데이터그램) 여러 수신지에 전달하는 브로드캐스트(broadcast)멀티캐스트(multicast)라는 기능이 있다. 브로드캐스트는 네트워크 전체를 대상으로 패킷을 전송하는 일대다 통신 방식이며 멀티캐스트는 하나 이상의 송신자들이 특정한 하나 이상의 수신자들에게 데이터를 전송하는 방식 (일대다 통신 방식) 이다. 멀티캐스트는 IP Class 중 D Class를 사용한다

  • Broadcast와 Multicast는 UDP 방식을 사용한다 (TCP는 해당 기능 지원 안함)이와 반대로 유니캐스트(Unicast)라는 방식이 있는데 이는 MAC 기반으로 상대측 IP주소를 목적지로 하는 일대일 통신 방식이다.

  • UDP는 실시간 처리가 필요할 때 사용하지만 전송의 신뢰성이 추가적으로 필요할 때 애플리케이션 계층에서 흐름 제어나 혼잡 제어를 구현하도록 한다.

profile
아무것도 모르는 초보

0개의 댓글