티스토리 뷰
오늘은 TCP/IP 정의와 플래그(Flag) 정리 해보려고 합니다. 모바일나 웹에서 서버와 데이터를 주고 받기 위해서는 정해진 프로토콜에 기반하여 데이터를 주고 받습니다. 오늘은 통신 프로토콜 중 하나인 TCP/IP를 다뤄보려고 합니다.
TCP이란?
TCP = Transmission Control Protocol
TCP/IP 통신은 안정적이고, 순서대로, 에러없이 통신하기 위해 만들어진 프로토콜 입니다. 통신 프로토콜에 있어서 기본적으로 꼭 알아두어야 하는 통신 방법입니다. TCP/IP는 HTTP와 달리서버와 클라이언트가 한번 연결이 되면 다른 한쪽에서 끊기 전까지 계속 통신할 수 있습니다. (HTTP는 단방향이여서 한번의 통신은 데이터 한번 전송한다는 방식입니다.) 주로 채팅이나 실시간 방송 등 계속 통신이 이루어져야 하는 상황에서 사용 됩니다.
TCP 안정적인 통신이라고 하는 이유
1. 통신 시작과 종료 과정 : TCP는 통신을 시작하기 위해서 3-handshake와 통신을 끝내기 위해 4-handshake 과정을 거쳐야합니다.
패킷 전송 확인 : ACK(확인 응답 패킷)을 통해 전송한 패킷을 다른 곳에서 잘 받았는지 알 수 있습니다. ACK 패킷이 오지 않으면 패킷이 잘 전달되지 않았다는 것을 알고 해당 패킷을 재전송 합니다.
연결 성립 과정 (= 3-handshake 과정)
-
클리아언트가 서버에 접속 요청
SYN(a)
패킷 전송 -
서버가 클라이언트 요청을 받고 수락한다는
ACK(a+1)
와SYN(b)
전송 -
클라이언트가 서버 수락 응답 패킷을 받고
ACK(b+1)
서버로 보내면 연결 성립
연결 해제 과정 (= 4-handshake 과정)
-
클라이언트가 연결 종료를 위한
FIN 플래그
전송 -
서버가 요청을 받고 확인 메시지
ACK
보낸다. 데이터 모두 보낼때까지 TIME_OUT 된다. -
데이터 모두 보내고 연결 종료되었다고 클라이언트에게
FIN 플래그
전송 -
클라이언트는 FIN 확인
ACK
보낸다. -
서버는 ACK 받고
소켓 연결을 close
한다. -
클라이언트는 서버로부터 못받은 데이터가 있을 경우를 대비해 일정 시간 세션을 남겨 놓고 잉여 패킷을 기다리는 과정을 거진다.
TIME_WAIT
TCP 단점
1. UDP에 비해 느리다 : TCP 는 패킷을 매번 보내고 확인하는 형식입니다. 이런 방식은 실시간 영상이나 빠르게 많은 데이터를 보내야 하는 상황에서 느릴 수 있습니다. 물론 해당 데이터가 안전하게 가야하는 경우에는 조금 느려도 사용해야 하지만요.
2. 패킷 재전송 문제 : 상대방에서 응답 패킷이 오지 않는다고 해서 계속 같은 패킷을 전송하면 서버에 문제가 생길 수 있다. 왜냐면 데이터를 받을 수 있는 버퍼의 양은 한정되어 있기 때문이다.
'IT 정보 > 개발공부' 카테고리의 다른 글
[java] string과 char의 차이점 (0) | 2023.06.11 |
---|---|
[GIT] 자주 사용하는 git 명령어 핵심 정리(1) (0) | 2020.03.29 |
JWT(Json Web Token)이란? 장단점, 사용하는 상황 (0) | 2020.02.16 |
CI/CD란 무엇인가? (0) | 2020.01.07 |
- Total
- Today
- Yesterday
- 안드로이드개념
- git
- CI/CD
- Swift데이터타입
- 안드로이드공부
- 티스토리블로그광고
- TextInputLayout
- TextInputEditText
- 블로그관리하기
- 서비스선언
- IT
- 구글서치콘솔
- Swift기초자료
- 4대컴포넌트
- 인증토큰
- swift
- AUTH0
- 개발공부
- 코드스타일
- 안드로이드
- 인드로이드4대컴포넌트
- github
- ios
- underline color
- codingtest
- 밑줄색
- 밀리세컨
- 사이트맵등록방법
- 네이버웹마스터
- Android
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |