이렇게 말해줘도 안하면 진짜 취업하기 싫은거임ㅋ - 멋진 멘토님
TCP/IP
는 패킷 통신 방식의 인터넷 프로토콜인 IP
와 전송 조절 프로토콜인 TCP
로 이루어져 있습니다. IP
는 패킷 전달여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있습니다. TCP
는 IP
위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해 줍니다. HTTP, FTP, SMTP등 TCP
를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP
위에서 동작하기 때문에, 묶어서 TCP/IP
로 부르기도 합니다.
네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스
입니다. TCP는 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(데이터, 메세지, 세그먼트라는 블록 단위)
를 안정적으로
, 순서대로
, 에러없이
교환할 수 있게 합니다.
가상 회선 방식을 제공합니다.
3-way handshaking
을 통해 연결을 설정.4-way handshaking
을 통해 연결을 해저. 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
윈도우사이즈(window size)
값을 통해 수신량을 정할 수 있음.네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지
Dupack-based retransmission
Timeout-based retransmission
확인응답(ACK, Acknowledgement)?
송신된 메세지가 수신측에서 정상적으로 수신되었음을 송신측으로 확인 응답하는 것, 오류제어 및 흐름제어를 위해 사용
멀티태스킹
이나브로드캐스팅
을 지원하지 않는다.TCP Connection (3-way handshake)
1. 먼저 open()
을 실행한 클라이언트가 SYN
을 보내고 SYN_SENT
상태로 대기한다.
2. 서버는 SYN_RCVD
상태로 바꾸고 SYN
과 응답 ACK
를 보낸다.
3. SYN
과 응답 ACK
을 받은 클라이언트는 ESTABLISHED
상태로 변경하고 서버에게 응답 ACK
를 보낸다.
4. 응답 ACK
를 받은 서버는 ESTABLISHED
상태로 변경한다.
TCP Disconnection (4-way handshake)
1. 먼저 close()
를 실행한 클라이언트가 FIN
을 보내고 FIN_WAIT1
상태로 대기한다.
2. 서버는 CLOSE_WAIT
으로 바꾸고 응답 ACK
를 전달한다. 동시에 해당 포트에 연결되어 있는 어플리케이션에게 close()
를 요청한다.
3. ACK
를 받은 클라이언트는 상태를 FIN_WAIT2
로 변경한다.
4. close()
요청을 받은 서버 어플리케이션은 종료 프로세스를 진행하고 FIN
을 클라이언트에 보내 LAST_ACK
상태로 바꾼다.
5. FIN
을 받은 클라이언트는 ACK
를 서버에 다시 전송하고 TIME_WAIT
으로 상태를 바꾼다. TIME_WAIT
에서 일정 시간이 지나면 CLOSED
된다. ACK
를 받은 서버도 포트를 CLOSED
로 닫는다.
🚨주의
CLOSE_WAIT
상태를 갖는 것은 아니다.FIN
을 보낼 수 있고, 이런 경우 서버가 FIN_WAIT
상태가 됩니다.close
를 요청하느냐에 따라 상태가 달라질 수 있습니다.IP
를 사용하는 네트워크 내에서 컴퓨터들 간에 메시지들이 교환될 때 제한된 서비스만을 제공하는 통신 프로토콜이다. UDP
는 TCP
의 대안이며, IP
와 함께 쓰일 때에는 UDP/IP
라고 표현하기도 한다. TCP
와 마찬가지로 UDP
도 한 컴퓨터에서 다른 컴퓨터로 데이터그램이라고 불리는 실제 데이터 단위를 받기 위해 IP
를 사용한다. 그러나 UDP
는 TCP
와는 달리, 메시지를 패킷(데이터그램)으로 나누고, 반대편에서 재조립하는 등의 서비스는 제공하지 않으며, 특히 도착하는 데이터 패킷들의 순서를 제공하지 않는다. 이 말은 UDP
를 사용하는 응용프로그램은, 전체 메시지가 올바른 순서로 도착했는지에 대해 확인할 수 있어야한다는 것을 의미한다. 교환해야할 데이터가 매우 적은(그러므로 재조립해야할 메시지도 매우 적은) 네트웍 응용프로그램들은 처리시간 단축을 위해 TCP
보다 UDP
를 더 선호할 수 있다. 일례로 TFTP는 TCP 대신에 UDP를 사용한다.
TCP | UDP |
---|---|
연결지향형 프로토콜 | 비 연결지향형 프로토콜 |
바이트 스트림을 통한 연결 | 메세지 스트림을 통한 연결 |
혼잡제어, 흐름제어 | 혼잡제어와 흐름제어 지원 X |
순서 보장, 상대적으로 느림 | 순서 보장되지 않음, 상대적으로 빠름 |
신뢰성 있는 데이터 전송 - 안정적 | 데이터 전송 보장 X |
TCP packet : Segment | UDP packet : Datagram |
HTTP, Email, File transfer에서 사용 | DNS, Broadcasting (도메인, 실시간 동영상 서비스에서 사용) |
UDP? 컴퓨터실에서 스타할 때 나오던 용어가 이런 의미였다니...?!?! 그리고 내가 인터넷을 사용할때 이렇게 많은 일이 한번에 실행되고 있다는 점도 놀라웠다.