miinsun
[Network] TCP의 이해 본문
- TCP의 전반적인 특징
- Point-to-Point : 한쌍의 프로세스 간의 데이터 통신
- Reliable : 신뢰성있고 순서에 의거해 전송
- pipelined: window 사이즈를 조절해서 tcp 혼잡 및 흐름 제어
- full duplex data: 양방향 통신, 전이중데이터
- conection-oriented: 연결 지향적, 제어 메세지 교환
- flow controlled: 흐름제어, 발신자는 수신자가 정한 용량보다 더 많이 보내지 못함
- TCP 헤더 구성 요소
- 포트 넘버(source port & dest port) : 출발지 포트와 도착지 포트가 있다 (포트 넘버는 0 ~ 65535)
- 시퀀스 넘버(sequence number) : 데이터의 중복을 확인할 때 사용하는 번호
- ACK 넘버(acknowledgement number) : 응답 번호
- Receive window : 윈도우 사이즈를 약속할 수 있는 필드
- checksum : 오류 검출 필드
- TCP 단순 연결 시나리오
- HostA가 HostB로 시퀀스 넘버를 42, ACK 넘버를 79, data ‘C’를 보냄
- 즉, HostA 측에서 42번에 해당하는 데이터를 보냄, 응답은 79로 해주세요
- HostB가 HostA로 시퀀스 넘버를 79, ACK 넘버를 43을 보냄
- HostA가 요청한 응답 79번을 시퀀스 넘버를 보냄
- ACK 43번은 HostB가 다음에 받아야 할 데이터 번호
- HostA가 HostB로 시퀀스 넘버를 43, ACK 넘버 80을 보냄
- 즉, 그 다음 데이터 시퀀스 넘버 43을 보내고 응답은 80번으로 해주세요.
- HostA가 HostB로 시퀀스 넘버를 42, ACK 넘버를 79, data ‘C’를 보냄
Q: 마지막에 통신이 끊기지 않고, HostB가 다시 한번 통신한다면?
A: Seq는 80, ACK는 44을 보냄
'Infra > Network' 카테고리의 다른 글
[Network] TCP의 흐름제어, 연결제어, 혼잡제어 (0) | 2022.07.12 |
---|---|
[Network] TCP TimeOut, TCP 재전송 (0) | 2022.07.12 |
[Network/Java] 자바 소켓 통신 (0) | 2021.12.03 |
[Network] TCP와 UDP의 차이 (0) | 2021.12.03 |
[Network/Python]파이썬 소켓 통신 (0) | 2021.12.02 |
Comments