몇 가지 코멘트 남깁니다~ 🔸 이 영상은 2부 영상입니다 1부 : 프로토콜 표준 스펙에서 정의한 소켓, 포트, TCP connection 개념 (ruclips.net/video/X73Jl2nsqiE/видео.html) 🔸 06:37 서버 쪽 소켓은 포트를 명시적으로 지정하는 이유 만약 서버 쪽에 포트를 지정하지 않고 OS가 자동으로 할당하게 한다면, 서버 포트가 어떤 값으로 할당됐는지 클라이언트가 모르기 때문에, 서버 쪽에서는 포트를 명시적으로 지정해주고, 클라이언트는 해당 포트로 요청을 보내게 됩니다 🔸 09:50 connection 전용 소켓이 만들어지는 부분을 코드로 보려면 03:01 코드에서 중간에 accept를 호출하는 부분을 보시면 됩니다 🔸 14:03 이 예제는 다른 TCP 소켓이 ‘또 다른 프로세스’에서 생성된 것으로 가정했지만, 상황에 따라서는 이미 존재하던 원래 프로세스에서도 추가로 TCP 소켓이 만들어 질 수 있습니다 🔸 오늘 내용은 디폴트 동작을 설명한 것이라고 보시면 되겠습니다 SO_REUSEADDR, SO_REUSEPORT 이런 옵션들을 설정해 주면 소켓의 동작 방식은 더 디테일하게 달라질 수 있습니다 그리고 UDP 쪽에서는 connected socket 개념도 있습니다 하지만 기본적으로는 이렇게 동작한다고 이해해 주시면 되겠습니다 🔸 소켓이 꼭 네트워크 통신에만 사용되는 것은 아닙니다 한 컴퓨터 시스템 내의 서로 다른 프로세스간에 통신(IPC)할 때도 소켓이 사용될 수 있습니다
학부생 때 이해안가서 얼렁뚱땅 넘겼었는데 이 강의 보고 확 이해가 되네요ㅋㅋㅋㅋ 강의자료, 멘트, 화면전환 타이밍 등만 봐도 정말 공들여서 강의 준비하신게 느껴집니다 부끄럽지만.. 컴공 졸업해놓고도 다 까먹고 기초가 부족해서 다시 공부하며 개발자 취업준비중이었는데 너무 좋은 채널을 발견했네요 보석을 발견한 기분입니다. 채널 바로 구독하고 영상 감사히, 꾸준히, 전부 정주행하겠습니다!!!
우와..! 꽤 오래전부터 구독해 주신 분으로 알고는 있었는데 거의 영상 처음 때 부터 보시고 계셨었군요! 와~! 지금까지 이렇게 꾸준히 시청해 주시고, 멤버십으로 응원까지 해주시고, 진심 정말 정말 감사합니다 ㅠㅠ 앞으로도 꾸준히 파이팅해서 양질의 영상들 올릴 수 있도록 할게요! 😊 다시 한번 정말 감사합니다 👍👍👍
오늘도 좋은 영상 너무너무 감사합니다! 매일 퇴근하고 쉬운코드님 영상 보면서 공부 / 복습한다고 마음 먹었으나, 막상 취업하고 나니 과제다 뭐다 쉬운 일이 아니네요 ㅋㅋㅋ ㅠ 그래도 시간 날 때마다 꾸준하게 보면서 공부하겠다고 마음 먹습니다. 항상 최고의 영상 남겨주셔서 감사합니다. 추가로 19:10 "실제 UDP 소켓이 식별되는(동작하는) 방식" 부분부터 질문이 있는데요, udp 소켓에서는 데이터를 보낼 때 여러 udp 소켓에 보낼 수 있다? yes - Q1. tcp 소켓에서도 가능한 것 아닌가요? 호스트명을 적을 때 포트번호까지 명시하니까요! 실제로도 한 애플리케이션에서 내부호출을 한다고 하면, localhost:8080에서 localhost:8081 / localhost:80802에도 요청을 보낼 수 있는 것과 무엇이 다른 것인지 감이 잘 오지 않습니다 udp socket에서 데이터를 읽을 때 어느 udp socket으로부터 왔는지 확인할 수 있다 - Q2. 이것도 tcp socket에서도 마찬가지 아닌가요? tcp 프로토콜을 통해 데이터를 전송할 때, tcp header에 해당 정보들을 실어서 보내게 되니까요! ----------- TCP / IP 프로토콜 스택을 시스템 관점에서 바라본다면 다음 두 가지로 분류할 수 있음 - 애플리케이션 레벨 : 시스템이 제공하는 네트워크 기능 사용 - 시스템의 기능을 사용할 때는 "socket"이라는 프로그래밍 인터페이스를 통해 접근한다 - 개발자는 소켓 프로그래밍을 통해 네트워크 상의 다른 프로세스와 데이터를 주고 받을 수 있도록 구현한다 - 시스템 레벨 : 애플리케이션에서 사용할 수 있도록 네트워크 기능 지원 application layer의 프로토콜은 모듈 형태로 소켓을 활용한 네트워크 기능이 제공되기 때문에, 보통 socket을 직접 조작해 통신 기능을 구현할 일은 적다 socket은 로 정의된다 - port는 socket을 식별하기 위해 부여되는 숫자 - ip addreess, port number로 unique하게 식별되는가? - udp : unique. 데이터가 손실되어도 상관 없기 때문에 단일 socket을 활용해서 연결할 수 있다 - tcp : not unique. TCP 스펙상 구현하려면 단일 socket을 활용해 연결해야 하지만, 실제로는 연결 후 각각과 연결을 담당하는 socket을 복사하는 구조로 구현된다 - 3-way handshake 이후 server에서는 listening socket이 복사한 걸 바인딩 시켜주기 때문. 이때 복사된 소켓이 가지는 IP address와 port number도 동일하다 - connection 연결 요청시 : 를 헤더에 담아 보내, 맺어져 있는 socket이 없기 때문에 listening socket에 보내 socket을 복사한다 - connection 성립된 이후 요청시 : 를 헤더에 담아 보내 server에서는 어떤 socket과 바인딩 되어 있는지 식별할 수 있다 클라이언트 측에서도 서로 다른 socket이 동일한 IP와 port를 가지는 것이 가능하긴 하다 - 포트가 재사용되는 경우 0 ~ 1023 : well known ports 1024 ~ 49151 : registered ports (IANA에 등록된 번호) 49152 ~ 65535 : dynamic ports (등록 안된 번호)
맞습니다 실무에서 일하면서 공부하는게 정말 쉽진 않죠 ㅠㅠ 항상 열심히 하시는 모습 정말 최고십니다!! 👍👍👍 Q1. 소켓 프로그래밍 하나의 TCP 소켓이 여러 TCP 소켓과 연결을 맺을 순 없을 텐데요ㅠㅠ >> localhost:8080에서 localhost:8081 / localhost:80802에도 요청을 보낼 수 있는 것과 무엇이 다른 것인지 감이 잘 오지 않습니다 이건 어떤 의미로 말씀하신 것인지 잘 모르겠어요 ㅠ Q2. udp는 connection-oriented가 아니기 때문에, 하나의 udp socket으로도 여러 개의 remote udp socket들이 보내는 데이터를 받을 수 있고, 그럼 이때 문제가 되는 부분은 방금 받은 데이터가 어떤 UDP socket이 보낸 것인지를 알아야 하는데, 이를 위해 'udp socket에서 데이터를 읽을 때 어느 udp socket으로부터 왔는지도 같이 확인할 수 있다'라는 의미로 말씀드린 거예요 linux.die.net/man/2/recvfrom 여기 링크의 recvfrom이 UDP 소켓 프로그래밍에서 데이터를 읽을 때 사용되는 API(혹은 시스템콜)인데, 파라미터 중에 sockaddr *src_addr 이라고 된 것이 있는데 얘가 데이터를 읽을 때 (데이터를 보낸) source UDP socket의 address를 반환하는 용도라고 보시면 됩니다 참고로 윈도우의 경우에는 TCP 소켓에 recvfrom을 쓰게 되면 이때 이 파라미터는 무시됩니다 (The from and fromlen parameters are ignored for connection-oriented sockets. : learn.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-recvfrom)
항상 영상 잘 보고 있습니다. 어려운 개념들을 쉽게 설명해주셔서 쏙쏙 이해가 됩니다.학부 때 미리 접했다면 얼마나 좋았을까요... 바쁘시겠지만 염치 불구하고 TCP 흐름/혼잡/오류 제어 영상 부탁드려도 될까요? 다른 서적들을 참고해도 항상 헷갈리는 개념이라 염치 불구하고 부탁드립니다 ㅠㅠ
매우 깊은 시간동안 고민하고 강의를 만들어주심이 전반적으로 아주 잘 느껴지고 .. 훌륭한 강의 감사합니다. 한가지 질문이 있는데요 ! " "TCP Socket은 IP, Port 가 유니크 해야한다." 라는게 TCP 프로토콜 표준에서 정의하고 있으나 실제 동작과는 조금 다르다." 라고 말씀해주셨는데요. 여기서 궁금한 점은 쉬운코드님이 말씀해주신 내용처럼 TCP socket 표준에서 말하고 있는 내용도 ip, port 번호로 클라이언트, 서버의 ip, port를 합친 값이 유니크 하다 가 아닐까요 ? 즉, TCP socket 표준 = 쉬운코드님 설명 이 아닌걸까요 ? 뭔가 제가 놓치고 있는 것 같은데, 마지막에 헷갈리네요 ..
이게 조금 엄밀히 말하면 유닉스/리눅스에서는 '모든 것은 파일이다' 라는 사상이 있습니다. 자세히 들어가려면 얘기할게 많아지는데요, 어쨌든 간략하게 말씀드리면, 결국 애플리케이션이 네트워크 통신을 하고 싶으면 반드시 OS 의 도움을 받아야만 통신이 가능하거든요~ 왜냐하면 OS 는 컴퓨터 하드웨어를직접 통제하는 시스템이고, 네트워크 통신을 하려면 결국 네트워크 어뎁터 같은 하드웨어를 사용해야하는거니까요. 그렇기 때문에 소켓은 애플리케이션과 OS 사이에서 네트워크 통신을 위해서 연결고리 역할을 하는 interface 가 맞고요, 그래서 실제로 소켓프로그래밍 예제 코드 보시면 거기서 사용되는 accept, connect 이런 함수들이 모두 system call 입니다. 한편 이 소켓을 유닉스/리눅스에서는 내부적으로 어떻게 구현했냐면, 모두 파일이라는 개념 혹은 구조를 통해 구현될 수 있도록 했어요. '모든 것은 파일이다' 라는 사상에 기반하여 유닉스 계열이 설계가 됐기 때문이죠. 그래서 소켓은 파일이다라는 표현이 자주 얘기되는 것 같아요. (특히 백엔드에서는 유닉스/리눅스 계열을 많이 쓰니까요) 참고로 윈도우 계열에서는 소켓은 파일이 아닐겁니다. 윈도우 내부적으로는 소켓과 파일을 구분해서 구현했어요. 그렇기 때문에 소켓은 파일이다 라는 말이 유닉스/리눅스 계열에서는 맞는 말인 걸로 이해해주시면 조금 더 정확하지 않을까 싶어요.
몇 가지 코멘트 남깁니다~
🔸 이 영상은 2부 영상입니다
1부 : 프로토콜 표준 스펙에서 정의한 소켓, 포트, TCP connection 개념 (ruclips.net/video/X73Jl2nsqiE/видео.html)
🔸 06:37 서버 쪽 소켓은 포트를 명시적으로 지정하는 이유
만약 서버 쪽에 포트를 지정하지 않고 OS가 자동으로 할당하게 한다면, 서버 포트가 어떤 값으로 할당됐는지 클라이언트가 모르기 때문에,
서버 쪽에서는 포트를 명시적으로 지정해주고, 클라이언트는 해당 포트로 요청을 보내게 됩니다
🔸 09:50 connection 전용 소켓이 만들어지는 부분을 코드로 보려면 03:01 코드에서 중간에 accept를 호출하는 부분을 보시면 됩니다
🔸 14:03 이 예제는 다른 TCP 소켓이 ‘또 다른 프로세스’에서 생성된 것으로 가정했지만, 상황에 따라서는 이미 존재하던 원래 프로세스에서도 추가로 TCP 소켓이 만들어 질 수 있습니다
🔸 오늘 내용은 디폴트 동작을 설명한 것이라고 보시면 되겠습니다
SO_REUSEADDR, SO_REUSEPORT 이런 옵션들을 설정해 주면 소켓의 동작 방식은 더 디테일하게 달라질 수 있습니다
그리고 UDP 쪽에서는 connected socket 개념도 있습니다
하지만 기본적으로는 이렇게 동작한다고 이해해 주시면 되겠습니다
🔸 소켓이 꼭 네트워크 통신에만 사용되는 것은 아닙니다
한 컴퓨터 시스템 내의 서로 다른 프로세스간에 통신(IPC)할 때도 소켓이 사용될 수 있습니다
어떤 강사가 소켓은 파일이다..라고해서 무릎을 탁 치며 이해가 가는듯했으나 여기서 소켓 설명을보니 또 헷갈리네.
그 분 표현도 맞는 표현입니다. '소켓은 파일이다' 라는 표현은 'OS 에서는 소켓을 어떻게 다루는가? 혹은 구현했는가?'에 대한 설명이라고 봐주시면 될 것 같아요.
진짜 너무 완벽한 강의입니다. 무료 강의에 제 댓글이 강사님의 좋은 하루를 만드는데 기여가 됐으면 좋겠습니다.!!! 큰 도움이 되었습니다!! 감사합니다!!!! 비전공자인데도 이해가 쏙쏙 돼요!
감사합니다!!! 댓글 덕분에 힘도 나고 기분도 좋고 토요일 주말 상큼하게 시작하게 해주셔서 감사합니다 ❤️
학부생 때 이해안가서 얼렁뚱땅 넘겼었는데 이 강의 보고 확 이해가 되네요ㅋㅋㅋㅋ
강의자료, 멘트, 화면전환 타이밍 등만 봐도 정말 공들여서 강의 준비하신게 느껴집니다
부끄럽지만.. 컴공 졸업해놓고도 다 까먹고 기초가 부족해서 다시 공부하며 개발자 취업준비중이었는데 너무 좋은 채널을 발견했네요 보석을 발견한 기분입니다.
채널 바로 구독하고 영상 감사히, 꾸준히, 전부 정주행하겠습니다!!!
열심히 준비했는데 알아봐주셔서 정말 감사합니다 ㅠㅠ
저도 학부 때 열심히 공부한거 취직할 때 많이 까먹었다가 취직하고나서 이게 중요한 걸 알고 열심히 다시 복기하느라 고생 좀 했었죠 ㅎㅎ
영상들 좋게 봐주셔서 감사합니다!! 자주 놀러와 주세요 :)
취업 응원합니다!!
감사합니다.. 기다린 만큼 너무 좋은 영상이군요! 열심히 공부하겠습니다!
유익하게 봐주셔서 감사합니다 :) 화이팅입니다!
소켓을 막연히 어렵게 생각했었는데 이번에도 좋은 영상 감사드립니다!
늘 영상들을 유익하게 봐주셔서 감사해요 :) 👍
매번 잘 보고 있습니다!
궁금하던 부분들을 꼭 찝어서 먼저 말씀해주셔서 이해하기 좋았습니다.
감사합니다 :) 항상 영상 유익하게 봐주셔서 큰 힘이 됩니다 👍
감사합니다... 확실히 이해가 되네요.
소켓이 정확히 뭘까 고민해도 애매모호했는데 왜 사람마다 말이 달랐는지 이해가 되는 부분도 있었고 덕분에 머릿 속에 그림이 그려지는 것 같아요.
크~~! 넘 다행입니다. 댓글 감사해요!
거의 처음 영상 올리실때 부터 도움많이 받았는데 벌써 구독자가 많이 늘었네요!
좋은 영상 많이 올려주세요 잘봤습니다 : )
우와..! 꽤 오래전부터 구독해 주신 분으로 알고는 있었는데 거의 영상 처음 때 부터 보시고 계셨었군요!
와~! 지금까지 이렇게 꾸준히 시청해 주시고, 멤버십으로 응원까지 해주시고, 진심 정말 정말 감사합니다 ㅠㅠ
앞으로도 꾸준히 파이팅해서 양질의 영상들 올릴 수 있도록 할게요! 😊
다시 한번 정말 감사합니다 👍👍👍
a4 8장에 필기해가며 네트워크 강의 다 들었습니다. 감사합니다. 정리한 내용 쭉 복습한 다음엔 전공 교재 보면서 깊게 배워보려고 합니다. 잘 들었습니다.
대단하십니다!! 제가 유튜브로 다시 복귀했기 때문에 네트워크 강의는 이제부터 찐으로 시작이에요 ㅎㅎ 앞으로 올라올 영상도 많은 관심 부탁드립니다 :)
오늘도 좋은 영상 너무너무 감사합니다! 매일 퇴근하고 쉬운코드님 영상 보면서 공부 / 복습한다고 마음 먹었으나,
막상 취업하고 나니 과제다 뭐다 쉬운 일이 아니네요 ㅋㅋㅋ ㅠ
그래도 시간 날 때마다 꾸준하게 보면서 공부하겠다고 마음 먹습니다. 항상 최고의 영상 남겨주셔서 감사합니다.
추가로 19:10 "실제 UDP 소켓이 식별되는(동작하는) 방식" 부분부터 질문이 있는데요,
udp 소켓에서는 데이터를 보낼 때 여러 udp 소켓에 보낼 수 있다? yes
- Q1. tcp 소켓에서도 가능한 것 아닌가요? 호스트명을 적을 때 포트번호까지 명시하니까요! 실제로도 한 애플리케이션에서 내부호출을 한다고 하면, localhost:8080에서 localhost:8081 / localhost:80802에도 요청을 보낼 수 있는 것과 무엇이 다른 것인지 감이 잘 오지 않습니다
udp socket에서 데이터를 읽을 때 어느 udp socket으로부터 왔는지 확인할 수 있다
- Q2. 이것도 tcp socket에서도 마찬가지 아닌가요? tcp 프로토콜을 통해 데이터를 전송할 때, tcp header에 해당 정보들을 실어서 보내게 되니까요!
-----------
TCP / IP 프로토콜 스택을 시스템 관점에서 바라본다면 다음 두 가지로 분류할 수 있음
- 애플리케이션 레벨 : 시스템이 제공하는 네트워크 기능 사용
- 시스템의 기능을 사용할 때는 "socket"이라는 프로그래밍 인터페이스를 통해 접근한다
- 개발자는 소켓 프로그래밍을 통해 네트워크 상의 다른 프로세스와 데이터를 주고 받을 수 있도록 구현한다
- 시스템 레벨 : 애플리케이션에서 사용할 수 있도록 네트워크 기능 지원
application layer의 프로토콜은 모듈 형태로 소켓을 활용한 네트워크 기능이 제공되기 때문에, 보통 socket을 직접 조작해 통신 기능을 구현할 일은 적다
socket은 로 정의된다
- port는 socket을 식별하기 위해 부여되는 숫자
- ip addreess, port number로 unique하게 식별되는가?
- udp : unique. 데이터가 손실되어도 상관 없기 때문에 단일 socket을 활용해서 연결할 수 있다
- tcp : not unique. TCP 스펙상 구현하려면 단일 socket을 활용해 연결해야 하지만, 실제로는 연결 후 각각과 연결을 담당하는 socket을 복사하는 구조로 구현된다
- 3-way handshake 이후 server에서는 listening socket이 복사한 걸 바인딩 시켜주기 때문. 이때 복사된 소켓이 가지는 IP address와 port number도 동일하다
- connection 연결 요청시 : 를 헤더에 담아 보내, 맺어져 있는 socket이 없기 때문에 listening socket에 보내 socket을 복사한다
- connection 성립된 이후 요청시 : 를 헤더에 담아 보내 server에서는 어떤 socket과 바인딩 되어 있는지 식별할 수 있다
클라이언트 측에서도 서로 다른 socket이 동일한 IP와 port를 가지는 것이 가능하긴 하다
- 포트가 재사용되는 경우
0 ~ 1023 : well known ports
1024 ~ 49151 : registered ports (IANA에 등록된 번호)
49152 ~ 65535 : dynamic ports (등록 안된 번호)
맞습니다 실무에서 일하면서 공부하는게 정말 쉽진 않죠 ㅠㅠ
항상 열심히 하시는 모습 정말 최고십니다!! 👍👍👍
Q1. 소켓 프로그래밍 하나의 TCP 소켓이 여러 TCP 소켓과 연결을 맺을 순 없을 텐데요ㅠㅠ
>> localhost:8080에서 localhost:8081 / localhost:80802에도 요청을 보낼 수 있는 것과 무엇이 다른 것인지 감이 잘 오지 않습니다
이건 어떤 의미로 말씀하신 것인지 잘 모르겠어요 ㅠ
Q2. udp는 connection-oriented가 아니기 때문에, 하나의 udp socket으로도 여러 개의 remote udp socket들이 보내는 데이터를 받을 수 있고, 그럼 이때 문제가 되는 부분은 방금 받은 데이터가 어떤 UDP socket이 보낸 것인지를 알아야 하는데, 이를 위해 'udp socket에서 데이터를 읽을 때 어느 udp socket으로부터 왔는지도 같이 확인할 수 있다'라는 의미로 말씀드린 거예요
linux.die.net/man/2/recvfrom
여기 링크의 recvfrom이 UDP 소켓 프로그래밍에서 데이터를 읽을 때 사용되는 API(혹은 시스템콜)인데, 파라미터 중에 sockaddr *src_addr 이라고 된 것이 있는데 얘가 데이터를 읽을 때 (데이터를 보낸) source UDP socket의 address를 반환하는 용도라고 보시면 됩니다
참고로 윈도우의 경우에는 TCP 소켓에 recvfrom을 쓰게 되면 이때 이 파라미터는 무시됩니다
(The from and fromlen parameters are ignored for connection-oriented sockets. : learn.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-recvfrom)
영상 너무 고퀄리티입니다!!! 1편 보고 2편으로 넘어왔는데 바로 구독했습니다 !!
감사함다! 구독은 사랑입니다
여태 봤던 강의중에 소켓 설명은 최고인것 같아요
넘 감사합니다 히히
ㅎㅎ다음엔 소켓고갈에 대해서 영상 만들어주셔도 좋을 것 같아요 감사합니다
파일디스크립터 관련 얘기라면 백발백중 시리즈 중에 다루지 않을까 싶습니다 :)
아 그렇기 때문에 소켓 프로그래밍 과정에서 서버에 accept 함수를 통해 새로운 클라이언트 소켓을 생성하는 것이군요..! 좋은 영상 감사합니다.
맞숩니다!! 최고최고!
19:58 UDP 통신에서 어느 UDP 소켓으로 보낼지 지정할 수 있다고 하셨는데, 그럼 아주빠르게 양방향으로 같은 패킷을 번갈아가면서 보낼 수 있나요?
앗, 질문을 정확히 이해를 못했습니다 ㅠ
항상 감사합니다 :)
저도 댓글 감사합니다 :)
좋은강의영상 너무 감사합니다😊
좋게 봐주셔서 감사합니다 :)
역시 쉽게 잘알려주시네여 감사합니다!
크~! 역시 찰스형이십니다! 👍
선생님 이 다음 영상을 애타게 기다리고 있읍니다,,, 돌아오세요ㅠ_ㅠ
흑 ㅠㅠ 사실 이런저런 일들로 못 올리고 있어요 ㅠㅠ 조만간 공지 영상으로 말씀드릴게요 ㅠ
항상 영상 잘 보고 있습니다. 어려운 개념들을 쉽게 설명해주셔서 쏙쏙 이해가 됩니다.학부 때 미리 접했다면 얼마나 좋았을까요...
바쁘시겠지만 염치 불구하고 TCP 흐름/혼잡/오류 제어 영상 부탁드려도 될까요? 다른 서적들을 참고해도 항상 헷갈리는 개념이라 염치 불구하고 부탁드립니다 ㅠㅠ
물론입니다! 제가 유튜브로 복귀를 했기 때문에 말씀하신 내용 다룰 예정입니다
매우 깊은 시간동안 고민하고 강의를 만들어주심이 전반적으로 아주 잘 느껴지고 .. 훌륭한 강의 감사합니다. 한가지 질문이 있는데요 !
" "TCP Socket은 IP, Port 가 유니크 해야한다." 라는게 TCP 프로토콜 표준에서 정의하고 있으나 실제 동작과는 조금 다르다." 라고 말씀해주셨는데요.
여기서 궁금한 점은 쉬운코드님이 말씀해주신 내용처럼
TCP socket 표준에서 말하고 있는 내용도 ip, port 번호로 클라이언트, 서버의 ip, port를 합친 값이 유니크 하다
가 아닐까요 ?
즉, TCP socket 표준 = 쉬운코드님 설명 이 아닌걸까요 ?
뭔가 제가 놓치고 있는 것 같은데, 마지막에 헷갈리네요 ..
TCP 표준이 나왔을 때는 만으로 유니크하게 식별가능하다고 얘기하고 있어서 살짝 다르죠.
실제 TCP 에서는 로 유니크하게 식별됩니다.
좋은 영상 감사햡니다
오래 기다려 주셔서 감사합니다 👍
좋은 영상 감사합니다 ㅜ
2부까지 봐주셔서 감사합니다 😍
너무 감사합니다❤❤❤
하트뿅뿅
선생님 너무 감사합니다!!
저도 너무 감사합니다 선생님 :)
좋은 영상 감사합니다 :)
러뷰~
쉬운코드 강사님, 그럼 socket이 파일 형태는 맞는데... OS (커널)에 데이터를 제공하고 데이터를 주고 받는 interface인건가요? 파일인데... 인터페이스라... 너무 헷갈려요.. 😢
이게 조금 엄밀히 말하면 유닉스/리눅스에서는 '모든 것은 파일이다' 라는 사상이 있습니다. 자세히 들어가려면 얘기할게 많아지는데요, 어쨌든 간략하게 말씀드리면, 결국 애플리케이션이 네트워크 통신을 하고 싶으면 반드시 OS 의 도움을 받아야만 통신이 가능하거든요~ 왜냐하면 OS 는 컴퓨터 하드웨어를직접 통제하는 시스템이고, 네트워크 통신을 하려면 결국 네트워크 어뎁터 같은 하드웨어를 사용해야하는거니까요. 그렇기 때문에 소켓은 애플리케이션과 OS 사이에서 네트워크 통신을 위해서 연결고리 역할을 하는 interface 가 맞고요, 그래서 실제로 소켓프로그래밍 예제 코드 보시면 거기서 사용되는 accept, connect 이런 함수들이 모두 system call 입니다.
한편 이 소켓을 유닉스/리눅스에서는 내부적으로 어떻게 구현했냐면, 모두 파일이라는 개념 혹은 구조를 통해 구현될 수 있도록 했어요. '모든 것은 파일이다' 라는 사상에 기반하여 유닉스 계열이 설계가 됐기 때문이죠. 그래서 소켓은 파일이다라는 표현이 자주 얘기되는 것 같아요. (특히 백엔드에서는 유닉스/리눅스 계열을 많이 쓰니까요)
참고로 윈도우 계열에서는 소켓은 파일이 아닐겁니다. 윈도우 내부적으로는 소켓과 파일을 구분해서 구현했어요. 그렇기 때문에 소켓은 파일이다 라는 말이 유닉스/리눅스 계열에서는 맞는 말인 걸로 이해해주시면 조금 더 정확하지 않을까 싶어요.
@ezcd 이해가 확실히 되었어요. 👍 자세한 설명 너무 감사합니다. 날씨가 추워졌는데 강사님도 가족분들도 모두 건강하시길 바랄께요 😊
@@minjikim1114 감사합니다 :) 민지님도 따뜻한 연말 되셔요~~!
안녕하세요 선생님, 백엔드 인턴을 하고 있는데 모든 강의가 너무 도움이 많이 됩니다! ㅎㅎ
혹시 블로그에 강의 내용을 정리할까 하는데 실례가 되지 않는다면 출처를 남기고 자료로 활용해도 괜찮을지 문의드립니다!
얼마전까지 유튜브를 쉬고 있어서 이제야 댓글 답니다 ㅠㅠ 출처만 잘 표기해주시면 저는 오히려 좋아요
감사합니다.
저두요~
goat ❤
라뷰 ❤