2023. 11. 8. 15:35ㆍ네트워크
소프트웨어개발방법론 수업 중 교수님께서 소켓 공부 과제를 내주셨다
OSI 7계층에 대해서도 배우고, TCP/IP에 대해서도 배웠지만 여전히 개념이 잡히지 않았다
그래서 다양한 블로그들을 찾아보고, Chat gpt에게도 물어보았더니, 이제서야 개념이 잡히기 시작한 것 같다
공부한 개념들을 내 방식대로 정리해보고자 한다
TCP/IP 프로토콜이란?
TCP - 두 시스템 간에 신뢰성 있는 데이터 전송을 권장하는 프로토콜
--> 일반적으로 email, FTP, 웹(HTTP) 등이 TCP에서 동작
IP - 송신 호스트와 수신 호스트가 데이터를 주고 받는 것을 관장하는 프로토콜
--> TCP보다 하위레벨
IP 주소란?
1. 네트워크 상에서 유일하게 식별될 수 있는 컴퓨터 주소
--> 숫자로 구성된 주소이며,4개의 숫자가 '.'으로 연결
ex) 192.156.11.15
2. 숫자로 된 주소는 기억하기 어려움 -> 문자열로 구성된 도메인 이름으로 바꿔서 사용
ex) 192.156.11.15 -> www.~~~.com
TCP란?
- 정의: 두 시스템 간에 신뢰성 있는 데이터 전송을 권장하는 프로토콜
- 하는 일:
1. 통신하고자 하는 양쪽 단말의 상태를 확인
-> 이 정보는 TCP Header에 담겨져 있음(추후 설명)
2. IP 정보 + Port 정보를 바탕으로 연결
192.156.11.15 + 110
IP란 네트워크 상에서 유일하게 식별되는 주소인데,
Port란 무엇일까?
Port(포트)
프로그래밍 에서는 논리적인 접속장소를 뜻한다.
TCP/IP의 상위 프로토콜을 사용하는 응용프로그램에서는 인터넷번호 할당 허가위원회(IANA)에 의해 미리 지정된 포트번호들을 가지고 있다. 이런 포트번호들은 '잘 알려진 포트들'이라고 불린다.
다른 응용프로그램 프로세스들은 접속할 때마다 포트번호가 새로 부여된다. 포트번호는 0부터 65535까지이며, 0부터 1023까지는 어떤 특권을 가진 서비스에 의해 사용될 수 있도록 예약되어 있다.
[네이버 지식백과] 포트 [port] (두산백과 두피디아, 두산백과)
이처럼 지식백과에서는 논리적인 접속 장소로 정의하고 있다.
다시 정의하자면, 입구로 정의할 수 있다.
위의 사진을 보면 우편 배달원이 도착했는데, 호수를 알지 못해 고민하는 걸 볼 수 있다.
아파트까지는 도착했지만 어떤 호수에 가야하는지 모르고 있다.
다른 예를 들자면, 항구에도 비유할 수 있다.
화물선인 나의 데이터가 화물선이 정박하는 항에 들어가야지, 어선이 정박하는 항에 들어가면 안 된다.
이처럼 포트는 우리가 어떤 프로그램에 접속할 것인지 명시하는 용도라고 생각하면 쉽다.
예를 들어서, 우리가 메일을 확인하기 위해서는 메일 서버 포트인 110을 이용한다.
- 작동 방식: 3-way handshake
1. 송신자가 수신자에게 'SYN'을 날려 통신이 가능한 지 확인
ex) 송신자가 전화번호('SYN')을 누르고, 폰이 꺼져 있는지(통신 가능한 지) 확인
2. 수신자가 송신자로부터 'SYN'을 받고, 'SYN/ACK'을 송신자에게 날려
통신할 준비가 되었음을 알림
ex) 송신자가 전화를 받고('SYN'), 상대방의 목소리를 듣고 대답한다('SYN/ACK'를 날림)
3. 송신자가 수신자의 'SYN/ACK'를 받고, 'ACK'를 날려 전송을 시작
ex) '여보세요?'라고 되물으며('ACK'를 날리며) 내 목소리가 잘 들리나 확인 후 대화 시작
-특징:
- 흐름 제어 - 송신자가 자신이 얼마나 보낼 수 있는지, 수신자가 자신이 데이터를 얼마나 받았는지 확인
이때, 한 번에 받고/보낼 수 있는 데이터의 양을 Window Size라고 함
Window Size는 받는 측의 사정을 고려해 수신자가 정함
지금까지 받은 데이터 양을 확인해 수신자에게 보내는데,
이를 Acknowledge Number라고 함
ex) 300번째까지 받았을 경우, 301을 회신
Why? 301번부터 보내라는 의미
이때의 301번을 Sequence Number라고 함
Sequence Number란 데이터의 순서번호를 표기한 것
2. 혼잡 제어 - 중간 경로인 네트워크가 혼잡하면 송/수신이 어려움
Slow Start -> 송신자가 데이터 송출량을 낮게 잡고 보내면서
수신자의 상태를 확인하여 데이터 송출량을 조금씩 높임
==> 이로써 현재 네트워크에서 가장 적합한 데이터 송출량을 확인할 수 있음
이렇게 TCP와 IP에 대해서 한 번 정리해보았다
만약에 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다! 😊
출처
1. 명품 JAVA Programming 책
2. https://aws-hyoh.tistory.com/entry/TCPIP-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
TCP/IP 쉽게 이해하기
IT 분야에서 실무를 담당하시는 분들뿐만 아니라 학생, IT 쪽에 조금이라도 관심이 있는 분들이라면 TCP/IP에 대해 들어보셨을 겁니다. 저 또한 학부시절에 TCP/IP에 대해서 여러 번 들어보았는데요.
aws-hyoh.tistory.com
3. https://sangbeomkim.tistory.com/101
포트(PORT)란?
1. PORT(포트), 넌 누구니? 먼저, 위키 백과에 나온 정의를 한 번 볼까요? 포트는 운영 체제 통신의 종단점이다. 이 용어는 하드웨어 장치에도 사용되지만, 소프트웨어에서는 네트워크 서비스나 특
sangbeomkim.tistory.com